3 ms·
Rust seems pretty close to this (with Result<T, E>), though there is also the panic system.
by dinosaurdynasty 6y ago
Rust seems pretty close to this (with Result<T, E>), though there is also the panic system.
- platz 6y agoit's trivial in any language to define and use a Result<T, E> type.
- aw1621107 6y agoThat depends a lot on what you mean by "use". Pretty much every commonly used language would be able to define something that can hold one of two things and provide ways to determine which one is present and retrieve one of the two options, but comparatively few are going to be able to provide the same guards against accidental or intentional misuse that pattern matching gets you.
- saagarjha 6y agoNo, not really. Languages that don’t really embrace such a type can usually never make its use ergonomic. Adding such a construct to C or Java would be “trivial” but its use would be exceedingly painful.
- The_rationalist 6y agoHere's an example of a result type in Kotlin implemented as a library monad. (the language is getting an official one but is currently less featureful than this lib) You can use exception or Result depending on when it makes the most sense and this is the best of both worlds. https://github.com/kittinunf/Result https://github.com/kittinunf/Result
- saagarjha 6y agoSwift had a bunch for a while too, but it’s getting an official one as well. Again, that’s only because the language provides the right tools for it to exist, in languages where you don’t have this you’re going to have a very hard time trying to add these things in.