Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs
DSL Implementation in MetaOCaml, Template Haskell, and C++