Avoid nilThe Maybe monad replaces nil checks with Just and Nothing, so absent values can never slip through unhandled.
Errors without exceptionsThe Either monad carries a success or an error value through a chain, deferring failure handling to the end.
Bridge OO and FPTry and Task wrap exception-throwing code into monads, with Task running the work on a fiber.
One consistent interfacefmap, bind, and fold work the same way across every monad, plus the | and >> operators for chaining.