Monads and do-syntax for Elixir
Monk helps to distinguish good from evil with an simple ok/error monad