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 Mutable: 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.