Exception monad transformer (source code)

= Exception monad transformer
{title2=$M(\operatorname{Maybe}\ A)$}

An unlabelled exception can be represented by an <algebraic data type> with successful and failed alternatives, sequenced inside a base <computational monad>. Sequencing skips the next computation after failure; a handler runs an alternative computation. The base effects already performed need not be undone.