Simple and Compositional Reification of Monadic Embedded Languages: Functional pearl
Paper i proceeding, 2013
When writing embedded domain specific languages in Haskell, it is often convenient to be able to make an instance of the Monad class to take advantage of the do-notation and the extensive monad libraries. Commonly it is desirable to compile such languages rather than just interpret them. This introduces the problem of monad reification, i.e. observing the structure of the monadic computation. We present a solution to the monad reification problem and illustrate it with a small robot control language. Monad reification is not new
but the novelty of our approach is in its directness, simplicity and compositionality.