Strafunski-StrategyLib- Library for strategic programming

MaintainerRalf Laemmel, Joost Visser
Safe HaskellNone




This module is part of StrategyLib, a library of functional strategy combinators, including combinators for generic traversal. This module defines auxilliary monadic functions, some of which serve as parametric polymorphic prototypes for actual strategy combinators.


The identity monad

newtype Id a Source

Identity type constructor.


Id a 


unId :: Id a -> aSource

Unwrap identity type constructor

Recover from partiality

succeed :: Maybe x -> xSource

Force success. If the argument value corresponds to failure, a run-time error will occur.

Prototypes for strategy combinators seq, let, choice

mseq :: Monad m => (a -> m b) -> (b -> m c) -> a -> m cSource

Sequential composition of monadic functions

mlet :: Monad m => (a -> m b) -> (b -> a -> m c) -> a -> m cSource

Sequential composition with value passing; a kind of monadic let.

mchoice :: MonadPlus m => (a -> m b) -> (a -> m b) -> a -> m bSource

Choice combinator for monadic functions

Guards and conditionals

argtype :: MonadPlus m => (x -> y) -> x -> m ()Source

Type guard described by the argument type of a function.

valtype :: MonadPlus m => x -> x -> m ()Source

Type guard described by a type of a value.

ifM :: MonadPlus m => m a -> (a -> m c) -> m c -> m cSource

A kind of monadic conditional.