Worin unterscheiden sich Traits in Rust von Typeclasses in Haskell?
Hallo zusammen! Ich schreibe seit etwa einem halben Jahr in Rust und habe vor kurzem begonnen, Haskell zu lernen. Mir ist aufgefallen, dass Traits in Rust den Typeclasses in Haskell sehr ähnlich sind, aber ich habe das Gefühl, dass es grundlegende Unterschiede zwischen ihnen gibt, die ich noch nicht vollständig verstehe.
Zum Beispiel kann ich in Rust folgenden Code schreiben:
```rust
trait Speak {
fn speak(&self) -> String;
}
struct Dog;
impl Speak for Dog {
fn speak(&self) -> String {
"Woof!".to_string()
}
}
fn make_speak(animal: T) {
println!("{}", animal.speak());
}
```
In Haskell sieht das Analogon, soweit ich verstehe, so aus:
```haskell
class Speak a where
speak :: a -> String
data Dog = Dog
instance Speak Dog where
speak _ = "Woof!"
makeSpeak :: Speak a => a -> IO ()
makeSpeak animal = p
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen