The Maybe and Either Monads

Learn about different types of monads in functional programming.

Sum types are especially useful for adding flow control to error handling. In Maybe and Either sum types, we have two monads that are presentable as type-classes in PHP. They’re versatile functors that can carry values in their objects to which computations/functions can be bound through functor methods. Their suitability for cleaner error handling is such that they encapsulate two subtypes for success and error values that are transformable using the bind and map method operations.

The Maybe monad

The Maybe monad is a sum type that stands out because a value defined or used within its context is either Just or Nothing (Some or Nothing in other domains). This duality means that, depending on the situation, a Maybe can only be Just or Nothing, much like a boolean.

  • The value subsumed in a Just context (Just object), a Just value, is associable with success. It’s valid and directly chainable.

  • The Nothing context (Nothing object) evaluates to a unit type (null), but stands in for the output of a computation that might go wrong. It doesn’t change no matter which of the Maybe sum type’s methods is applied to it.

Imagine a function that, for some reason, only adds 10 to a value larger than 20. This function has a glaring constraint and can enter anomalous territory upon violation of the condition. Implementing this logic with a simple if statement results in a null value when this function is invoked with a value less than or equal to 20.

Get hands-on with 1400+ tech skills courses.