Description
A Haskell library for free monads and related abstractions. Free monads let developers describe programs as data, then interpret those descriptions in different ways for production, tests, or analysis.
Developers use it in embedded languages, effect systems, interpreters, and modular application design. It is powerful, but it should be chosen when multiple interpreters or explicit program structure are worth the extra abstraction.