1 -----------------------------------------------------------------------------
3 -- Module : Control.Monad.Trans
4 -- Copyright : (c) Andy Gill 2001,
5 -- (c) Oregon Graduate Institute of Science and Technology, 2001
6 -- License : BSD-style (see the file libraries/core/LICENSE)
8 -- Maintainer : libraries@haskell.org
9 -- Stability : experimental
10 -- Portability : portable
12 -- $Id: Trans.hs,v 1.1 2001/06/28 14:15:02 simonmar Exp $
14 -- The MonadTrans class.
16 -- Inspired by the paper
17 -- \em{Functional Programming with Overloading and
18 -- Higher-Order Polymorphism},
19 -- \A[HREF="http://www.cse.ogi.edu/~mpj"]{Mark P Jones},
20 -- Advanced School of Functional Programming, 1995.}
21 -----------------------------------------------------------------------------
23 module Control.Monad.Trans (
32 -- ---------------------------------------------------------------------------
35 -- Monad to facilitate stackable Monads.
36 -- Provides a way of digging into an outer
37 -- monad, giving access to (lifting) the inner monad.
39 class MonadTrans t where
40 lift :: Monad m => m a -> t m a
42 class (Monad m) => MonadIO m where
45 instance MonadIO IO where