The transf package

It scans its input for guard tokens and passes everything between to transformation functions. Transformation functions are composed from a small set of combinators and may perform arbitrary Haskell computation. Transf contains a full Haskell interpreter and can even interpret its input as Haskell.

The main purpose of Transf is to allow the embedding of Domain-Specific Languages in text or Markdown files.
For example one could use it with Diagrams as follows: