[Haskell-cafe] free vs. operational vs. free-operational

oleg at okmij.org oleg at okmij.org
Tue Nov 26 10:51:46 UTC 2013

Alejandro Serrano Mena wrote:
> I really like the separation between providing a data type and then a
> interpretation that operational embodies...

Then perhaps you may like extensible effects then. They are designed
around the separation of requestors and their interpreters. However, the
set of requests is open (and can be extended at any time without
recompiling the program). Likewise the interpreters can be extended
incrementally. One can add an interpreter for an effect without caring
what other effects are there -- unless one has some reason for caring
about other effects (e.g.,m for finalization). One may then snoop on
other effects while interpreting. Moreover, the handlers may be
scattered around program; they don't have to be all at the very top.

Crucially, unlike data types a la carte, extensible effects provide
effect encapsulation: one can not only add effects but subtract them,
by completely handling the effects. The type system ensures that all
effects must be completely handled at the end.

More information about the Haskell-Cafe mailing list