{-# LANGUAGE CPP #-} ------------------------------------------------------------------------------- -- | -- Module : Control.Monad.Trans.Region -- Copyright : (c) 2009-2010 Bas van Dijk -- License : BSD3 (see the file LICENSE) -- Maintainer : Bas van Dijk -- -- This modules implements a technique called /"Lightweight monadic regions"/ -- invented by Oleg Kiselyov and Chung-chieh Shan -- -- See: -- -------------------------------------------------------------------------------- module Control.Monad.Trans.Region ( -- * Regions RegionT -- * Running regions , runRegionT -- * Duplication , Dup(dup) -- * Ancestor relation between regions , AncestorRegion , RootRegion -- * Handy functions for writing monadic instances , liftCallCC , mapRegionT , liftCatch ) where import Control.Monad.Trans.Region.Internal