Comprehending monads | Synapse