- Of course, associativity must hold for arbitrary functions of
- type `'a -> M 'a`, where `M` is the monad type. It's easy to
- convince yourself that the bind operation for the option monad
- obeys associativity by dividing the inputs into cases: if `m`
- matches `None`, both computations will result in `None`; if
- `m` matches `Some n`, and `f n` evalutes to `None`, then both
- computations will again result in `None`; and if the value of
- `f n` matches `Some r`, then both computations will evaluate
- to `g r`.
+Of course, associativity must hold for arbitrary functions of
+type `'a -> M 'a`, where `M` is the monad type. It's easy to
+convince yourself that the bind operation for the option monad
+obeys associativity by dividing the inputs into cases: if `m`
+matches `None`, both computations will result in `None`; if
+`m` matches `Some n`, and `f n` evalutes to `None`, then both
+computations will again result in `None`; and if the value of
+`f n` matches `Some r`, then both computations will evaluate
+to `g r`.