Portability | GHC only |
---|---|
Maintainer | Simon Meier <iridcode@gmail.com> |
Safe Haskell | None |
Computations that need perform case distinctions.
- class Monad m => MonadDisj m where
- contradictoryBecause :: Maybe String -> m a
- disjunction :: m a -> m a -> m a
- contradictory :: MonadDisj m => m a
- contradictoryIf :: MonadDisj m => Bool -> m ()
- contradiction :: MonadDisj m => String -> m a
- contradictionIf :: MonadDisj m => Bool -> String -> m ()
- disjunctions :: MonadDisj m => [m a] -> m a
- disjunctionOfList :: MonadDisj m => [a] -> m a
- newtype DisjT m a = DisjT {}
- disjT :: m [a] -> DisjT m a
- runDisjT :: DisjT m a -> m [a]
- module Control.Monad
- module Control.Monad.Fix
- module Control.Monad.Trans
MonadDisj class
class Monad m => MonadDisj m whereSource
contradictoryBecause :: Maybe String -> m aSource
Mark a contradiction.
disjunction :: m a -> m a -> m aSource
Disjoin two computations.
contradictory :: MonadDisj m => m aSource
contradictory
denotes the logical false.
contradictoryIf :: MonadDisj m => Bool -> m ()Source
contradictoryIf b
is logically equivalent to not b
contradiction :: MonadDisj m => String -> m aSource
contradiction reason
denotes the logical false, but also
provides the reason
as meta-information.
contradictionIf :: MonadDisj m => Bool -> String -> m ()Source
contradictionIf b reason
is logically equivalent to not b
, but also
provides the reason
as meta-information.
disjunctions :: MonadDisj m => [m a] -> m aSource
disjunctions ds
builds the disjunction of all the ds
values.
disjunctionOfList :: MonadDisj m => [a] -> m aSource
disjunctionOfList xs
build the disjunction of the values in list xs
.
The DisjT monad transformer
A disjunction of atoms of type a.
MonadTrans DisjT | |
MonadReader r m => MonadReader r (DisjT m) | |
Monad m => Monad (DisjT m) | |
Functor m => Functor (DisjT m) | |
Applicative m => Applicative (DisjT m) | |
Monad m => MonadDisj (DisjT m) |
Convencience exports
module Control.Monad
module Control.Monad.Fix
module Control.Monad.Trans