Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Not really. See Rust/Scala/Haskell's Result/Either type, which has compiler support, but that compiler support is lightweight - you use the same control structures and flows as with regular code.


That's a great approach, but needs sum types and HKT to be effective, neither of which C++ really has (std::variant exists but doesn't always behave as a proper sum type AIUI) at present.


Rust manages it without HKT quite reasonably (rather than implementing generic monads, it has the `?` operator, which is syntax-sugar for something like [0]), though sum types are a necessity.

[0] match whatever { Ok(v) => v, Err(e) => return Err(From::from(e)) }


Ah, last I knew they were relying on macros. Still, ? is an ugly special case where with HKT it could be a reusable general operator.


Absolutely - there's currently discussion around a Carrier trait which would make it generic, once we have some variety of HKT. Still, it's good enough for now, and any future development of it will be backwards-compatible.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: