[Haskell-cafe] NB: DO NOT USE `pure = return`