Operational Applicative, Alternative, Monad and MonadPlus from free types.
A reimplementation of the operational
package (http://hackage.haskell.org/package/operational) using free monads (from http://hackage.haskell.org/package/free). This implements ideas discussed here:
http://stackoverflow.com/questions/14263363/is-operational-really-isomorphic-to-a-free-monad
http://www.reddit.com/r/haskell/comments/17a33g/free_functors_the_reason_free_and_operational_are/
To understand the basic concepts you can do no better than read Heinrich Apfelmus' operational
tutorial:
In addition to that, this package supplies operational
-style modules for Applicative
, Alternative
and MonadPlus
. Applicative
and Alternative
programs easily admit of static analysis. See these references for discussion and examples:
http://gergo.erdi.hu/blog/2012-12-01-static_analysis_with_applicatives/ (discussion: http://www.reddit.com/r/haskell/comments/143wpd/static_analysis_with_applicatives/)
http://paolocapriotti.com/blog/2013/04/03/free-applicative-functors/ (discussion: http://www.reddit.com/r/haskell/comments/1bnql3/free_applicative_functors_icfp_submission/)
See Control.Applicative.Operational
for the bulk of the documentation. Control.Alternative.Operational
also has some significant examples.