Strafunski-StrategyLib-5.0.0.5: Library for strategic programming

MaintainerRalf Laemmel, Joost Visser
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell98

Data.Generics.Strafunski.StrategyLib.MonadicFunctions

Contents

Description

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.

Synopsis

Recover from partiality

succeed :: Maybe x -> x Source

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 c Source

Sequential composition of monadic functions

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

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

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

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 c Source

A kind of monadic conditional.