Copyright | (c) 2010 2011 Simon Meier |
---|---|
License | GPL v3 (see LICENSE) |
Maintainer | Simon Meier <iridcode@gmail.com> |
Portability | GHC only |
Safe Haskell | None |
Language | Haskell98 |
Control.Monad.Disj
Description
Computations that need perform case distinctions.
- class Monad m => MonadDisj m where
- 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 where #
Minimal complete definition
Methods
contradictoryBecause :: Maybe String -> m a #
Mark a contradiction.
disjunction :: m a -> m a -> m a #
Disjoin two computations.
contradictory :: MonadDisj m => m a #
contradictory
denotes the logical false.
contradictoryIf :: MonadDisj m => Bool -> m () #
contradictoryIf b
is logically equivalent to not b
contradiction :: MonadDisj m => String -> m a #
contradiction reason
denotes the logical false, but also
provides the reason
as meta-information.
contradictionIf :: MonadDisj m => Bool -> String -> m () #
contradictionIf b reason
is logically equivalent to not b
, but also
provides the reason
as meta-information.
disjunctions :: MonadDisj m => [m a] -> m a #
disjunctions ds
builds the disjunction of all the ds
values.
disjunctionOfList :: MonadDisj m => [a] -> m a #
disjunctionOfList xs
build the disjunction of the values in list xs
.
The DisjT monad transformer
A disjunction of atoms of type a.
Instances
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