▲ | timClicks 2 days ago | |
I consider Rust's Result<T, E> and Option<T> to be monads. Is this incorrect? | ||
▲ | bunderbunder 2 days ago | parent [-] | |
Depending on what functions are in there, they are. But you can make types that happen to be monads in C, too. All you need is a datatype with `return` and `bind` functions that follow a certain spec. What makes Haskell different is that it has a language-level concept of a monad that's supported by special syntax for manipulating them. (C# does, too, for what it's worth.) Without something like that, observing that a certain type can be used as a monad is maybe more of a fun fact than anything else. (ETA: for example, many, many languages have list types that happen to be monads. But this knowledge probably won't change anything about how you use them.) |