Haskell "macros"
profiling and coverage
scripts
parsec
decoupling functions from effects
use MonadError and Applicative
Yesod: routes, handlers, foundation, templates, server

clean up and look at the dumped splices