A version of Operational [1] suitable for EDSLs
extensible via data types à la carte.
This library provides two important extensions to
Operational:
1. The ability for instructions to refer to sub-programs in
a generic way. (This is a key to obtaining an extensible
library.)
2. Generic interpretation of programs, including
sub-programs and other sub-structures (e.g.
expressions).
More information is found in the documentation of
Control.Monad.Operational.Higher.
[1] http://hackage.haskell.org/package/operational