Code from "Monad Transformers Step by Step" by Martin Grabmüller