Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
MonadLib.Derive
Description
This module defines a number of functions that make it easy to get the functionality of MonadLib for user-defined newtypes.
Synopsis
- data Iso (m :: Type -> Type) (n :: Type -> Type) = Iso (forall a. m a -> n a) (forall a. n a -> m a)
- derive_fmap :: forall (m :: Type -> Type) n a b. Functor m => Iso m n -> (a -> b) -> n a -> n b
- derive_pure :: forall (m :: Type -> Type) n a. Applicative m => Iso m n -> a -> n a
- derive_apply :: forall (m :: Type -> Type) n a b. Applicative m => Iso m n -> n (a -> b) -> n a -> n b
- derive_empty :: forall (m :: Type -> Type) n a. Alternative m => Iso m n -> n a
- derive_or :: forall (m :: Type -> Type) n a. Alternative m => Iso m n -> n a -> n a -> n a
- derive_return :: forall (m :: Type -> Type) n a. Monad m => Iso m n -> a -> n a
- derive_bind :: forall (m :: Type -> Type) n a b. Monad m => Iso m n -> n a -> (a -> n b) -> n b
- derive_fail :: forall (m :: Type -> Type) n a. MonadFail m => Iso m n -> String -> n a
- derive_mzero :: forall (m :: Type -> Type) n a. MonadPlus m => Iso m n -> n a
- derive_mplus :: forall (m :: Type -> Type) n a. MonadPlus m => Iso m n -> n a -> n a -> n a
- derive_mfix :: forall (m :: Type -> Type) n a. MonadFix m => Iso m n -> (a -> n a) -> n a
- derive_ask :: forall (m :: Type -> Type) i n. ReaderM m i => Iso m n -> n i
- derive_local :: forall (m :: Type -> Type) i n a. RunReaderM m i => Iso m n -> i -> n a -> n a
- derive_put :: forall (m :: Type -> Type) i n. WriterM m i => Iso m n -> i -> n ()
- derive_collect :: forall (m :: Type -> Type) i n a. RunWriterM m i => Iso m n -> n a -> n (a, i)
- derive_get :: forall (m :: Type -> Type) i n. StateM m i => Iso m n -> n i
- derive_set :: forall (m :: Type -> Type) i n. StateM m i => Iso m n -> i -> n ()
- derive_raise :: forall (m :: Type -> Type) i n a. ExceptionM m i => Iso m n -> i -> n a
- derive_try :: forall (m :: Type -> Type) i n a. RunExceptionM m i => Iso m n -> n a -> n (Either i a)
- derive_callWithCC :: forall (m :: Type -> Type) n a. ContM m => Iso m n -> ((a -> Label n) -> n a) -> n a
- derive_abort :: forall (m :: Type -> Type) i n a. AbortM m i => Iso m n -> i -> n a
- derive_lift :: forall (t :: (Type -> Type) -> Type -> Type) m n a. (MonadT t, Monad m) => Iso (t m) n -> m a -> n a
- derive_inBase :: forall (m :: Type -> Type) x n a. BaseM m x => Iso m n -> x a -> n a
- derive_runM :: forall (m :: Type -> Type) a r n. RunM m a r => Iso m n -> n a -> r
Documentation
data Iso (m :: Type -> Type) (n :: Type -> Type) Source #
An isomorphism between (usually) monads. Typically the constructor and selector of a newtype delcaration.
Constructors
Iso (forall a. m a -> n a) (forall a. n a -> m a) |
derive_fmap :: forall (m :: Type -> Type) n a b. Functor m => Iso m n -> (a -> b) -> n a -> n b Source #
derive_pure :: forall (m :: Type -> Type) n a. Applicative m => Iso m n -> a -> n a Source #
Derive the implementation of pure
from Applicative
.
derive_apply :: forall (m :: Type -> Type) n a b. Applicative m => Iso m n -> n (a -> b) -> n a -> n b Source #
Derive the implementation of <*>
from Applicative
.
derive_empty :: forall (m :: Type -> Type) n a. Alternative m => Iso m n -> n a Source #
Derive the implementation of empty
from Alternative
.
derive_or :: forall (m :: Type -> Type) n a. Alternative m => Iso m n -> n a -> n a -> n a Source #
Derive the implementation of <|>
from Alternative
.
derive_return :: forall (m :: Type -> Type) n a. Monad m => Iso m n -> a -> n a Source #
derive_bind :: forall (m :: Type -> Type) n a b. Monad m => Iso m n -> n a -> (a -> n b) -> n b Source #
derive_fail :: forall (m :: Type -> Type) n a. MonadFail m => Iso m n -> String -> n a Source #
derive_mzero :: forall (m :: Type -> Type) n a. MonadPlus m => Iso m n -> n a Source #
derive_mplus :: forall (m :: Type -> Type) n a. MonadPlus m => Iso m n -> n a -> n a -> n a Source #
derive_mfix :: forall (m :: Type -> Type) n a. MonadFix m => Iso m n -> (a -> n a) -> n a Source #
Derive the implementation of mfix
from MonadFix
.
derive_ask :: forall (m :: Type -> Type) i n. ReaderM m i => Iso m n -> n i Source #
derive_local :: forall (m :: Type -> Type) i n a. RunReaderM m i => Iso m n -> i -> n a -> n a Source #
Derive the implementation of local
from RunReaderM
.
derive_put :: forall (m :: Type -> Type) i n. WriterM m i => Iso m n -> i -> n () Source #
derive_collect :: forall (m :: Type -> Type) i n a. RunWriterM m i => Iso m n -> n a -> n (a, i) Source #
Derive the implementation of collect
from RunWriterM
.
derive_get :: forall (m :: Type -> Type) i n. StateM m i => Iso m n -> n i Source #
derive_set :: forall (m :: Type -> Type) i n. StateM m i => Iso m n -> i -> n () Source #
derive_raise :: forall (m :: Type -> Type) i n a. ExceptionM m i => Iso m n -> i -> n a Source #
Derive the implementation of raise
from ExceptionM
.
derive_try :: forall (m :: Type -> Type) i n a. RunExceptionM m i => Iso m n -> n a -> n (Either i a) Source #
Derive the implementation of try
from RunExceptionM
.
derive_callWithCC :: forall (m :: Type -> Type) n a. ContM m => Iso m n -> ((a -> Label n) -> n a) -> n a Source #
Derive the implementation of callWithCC
from ContM
.
derive_abort :: forall (m :: Type -> Type) i n a. AbortM m i => Iso m n -> i -> n a Source #
derive_lift :: forall (t :: (Type -> Type) -> Type -> Type) m n a. (MonadT t, Monad m) => Iso (t m) n -> m a -> n a Source #
derive_inBase :: forall (m :: Type -> Type) x n a. BaseM m x => Iso m n -> x a -> n a Source #