This library implements the superset of the interface described in
* A Monadic Framework for Delimited Continuations,
R. Kent Dybvig, Simon Peyton Jones, and Amr Sabry
JFP, v17, N6, pp. 687--730, 2007.
http://www.cs.indiana.edu/cgi-bin/techreports/TRNNN.cgi?trnum=TR615
This library is closest to the interface of Dybvig, Peyton Jones and Sabry.
Control.Monad.CC.CCRef
is derived from the definitional interpreter using
the implementation techniques described and justified in the FLOPS 2010 paper.
The monad transformer CC
implemented by Control.Monad.CC.CCRef
requires
the base monad to support reference cells. In other words, the base monad
must be a member of the type class MonadRef
: that is, must be IO
, ST
,
STM
or their transformer. Control.Monad.CC.CCRef
adds to the original
interface the frequently used function abortP
as a primitive.
See the original article at http://okmij.org/ftp/continuations/implementations.html#CC-monads
for more information.
This package uses http://hackage.haskell.org/package/ref-tf's MonadRef
class
instead of Mutation
class what is used in
http://hackage.haskell.org/package/CC-delcont-ref package.