Arbitrary-precision rational numbers, represented as a ratio of two Integer values. A rational number may be constructed using the % operator.

pretty Text.PrettyPrint.HughesPJ, pretty Text.PrettyPrint, template-haskell Language.Haskell.TH.PprLib

approxRational, applied to two real fractional numbers x and epsilon, returns the simplest rational number within epsilon of x. A rational number y is said to be *simpler* than another y' if
* abs (numerator y) <= abs (numerator y'), and
* denominator y <= denominator y'.
Any real interval contains a unique simplest rational; in particular, note that 0/1 is the simplest rational of all.

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:
* http://apfelmus.nfshost.com/articles/operational-monad.html
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.
Version 0.5.0.0

This package provides tiny implementation of operational monad.
Version 0.4.2

This library makes it easy to implement monads with tricky control flow.
This is useful for: writing web applications in a sequential style, programming games with a uniform interface for human and AI players and easy replay capababilities, implementing fast parser monads, designing monadic DSLs, etc.
See the project homepage http://haskell.org/haskellwiki/Operational for a more detailed introduction and features.
Related packages: MonadPrompt http://hackage.haskell.org/package/MonadPrompt.
Version 0.2.2.1