Monads, part one | Fabulous adventures in coding