flexiwrap-0.0.1: Data/Flex/Monad.hs
{-# LANGUAGE ScopedTypeVariables, Rank2Types #-}
{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
-- .$Header: c:/Source/Haskell/Wrapper/Data/Flex/RCS/Monad.hs,v 1.1 2010/03/10 01:57:35 dosuser Exp dosuser $
module Data.Flex.Monad where
-- import Data.Flex.Applicative (WrapPure(..))
class FWMonad (m :: * -> *) r | m -> r
data FWDefaultMonad = FWDefaultMonad
data FWReturn t (m :: * -> *) = FWReturn
newtype WrapReturn m = WrapReturn {unwrapReturn :: forall a. a -> m a}
wrapReturn :: (forall a. a -> m a) -> WrapReturn m
wrapReturn = WrapReturn
{- GHC 6.6.1 can't cope with this version of unwrapReturn
type WrapReturn = WrapPure
wrapReturn :: (forall a. a -> m a) -> WrapReturn m
wrapReturn = WrapPure
unwrapReturn :: WrapReturn m -> (forall a. a -> m a)
unwrapReturn = unwrapPure
-}
data FWBind t (m :: * -> *) = FWBind
newtype WrapBind m =
WrapBind {unwrapBind :: forall a b. m a -> (a -> m b) -> m b}
wrapBind :: (forall a b. m a -> (a -> m b) -> m b) -> WrapBind m
wrapBind = WrapBind
-- vim: expandtab:tabstop=4:shiftwidth=4