Det er mandag, mine bekendte. Inspireret af https://feddit.dk/post/257712
På hedengangne dailyrush havde vi et par populære tråde, en hvor man kunne skrive, hvad man lige havde set af film og serier, og en anden med hvad man lige havde læst, og endnu en til spil man lige havde spillet.
Én ugentlig tråd med titlen “jeg har lige læst/set/spillet/hørt”, og så kunne man ellers give sin uforbeholdne mening om alt fra film og spil til podcasts og bøger.
Denne stickytråd oprettes automatisk af botten hver mandag kl. 7. Eventuelle ændringer kan forkomme.
>implicitte interfaces
Synes selv det er en meget mærkelig feature. Især fordi man potentielt kan implementere et interface ved en fejl. Jeg er generelt imod implicitte ting.
Mener du traits? Jeg har ikke selv brugt Rust, men har kodet en del Haskell, og så vidt jeg kan forstå er traits nogenlunde samme koncept som type classes i Haskell. Jeg synes selv at det er en langt overlegent måde at definere interfaces på sammenlignet med interfaces defineret ved subtypning som i de fleste objektorierentede sprog (Java, C#). OO-interfaces kan være OK til typer som repræsenterer objekter (services og ressourcer med en livscyklus som f.eks. en web service eller en netværksport), men til typer som repræsenterer data (lister, maps, vektorer, etc.) der er type classes den rigtige abstraktion, og OO-interfaces fører kun til hovedpiner.
I Haskell er der som udgangspunkt også en begrænsning der tvinger dig til at definere dine type classes samme sted som datatypen hvilket begrænser risikoen for at komme til at definere en instans “ved en fejl”.
Nej altså implicitte interfaces er en feature i Go, ikke i Rust.
Og ja, Rust traits er dybest set det samme som Haskell type classes. Der er dog visse ting du kan i Haskell som du ikke kan i Rust (noget avanceret higher order ting). Men det er meget sjældent et problem.
I Rust kan du implementere traits hvor du har lyst, men du skal have defineret enten traitet eller datatypen (eller begge dele) for at implementere det. Du kan ikke implementere et fremmed trait på en fremmed type. Kan ikke lige huske om Haskell har en lignende restriktion.
Ah, så læste jeg bare tråden forkert, beklager :).
Jo, det er samme restriktion i Haskell. Den kan slås fra hvis man virkelig har brug for det, f.eks. hvis et 3. parts bibliotek kræver at en anden 3. parts type er en instans af en given typeklasse, og man ikke har mulighed for at bruge en
newtype
.