I. techniques for the implementation of domain specific languages A. syntax 1. syntax matters 2. syntactic sugars what does this look like in Haskell? 3. using a monad, get syntactic sugars 4. abstract syntax B. higher-order idioms 1. higher-order abstract syntax 2. currying for user-customization 3. functional representation of data C. type checking tricks 1. phantom types D. sequencing using monads