Higher Order Programming in Erlang. Monadic composition and consistent APIs.