Comment on page

# Monad Laws

There are three laws that monad instances must satisfy to be valid:

- Left Identity ->
`(return x) >>= f = f x`

The left identity law states that if we simply use

`return`

on a value before binding it to the function `f`

, the result should be the same as simply applying `f x`

directly.- Right Identity ->
`m >>= return = m`

The right identity law states that if have some monadic value

`m`

(or an expression that computes to this monadic value) and bind it to the `return`

function, the result should be simply the same value `m`

.- Associativity ->
`(m >>= f) >>= g = m >>= (\x -> f x >>= g)`

The associativity law states that if have some monadic value

`m`

and want to create a chain binding for functions `f`

and `g`

(applying `f`

first, and the result of that application to `g`

), then it should not matter whether we nest the two binding functions, as long as the order of application is preserved.

Last modified 6mo ago