A library for creating embedded DSLs in Haskell