Strafunski-StrategyLib-5.0.1.0: Library for strategic programming

MaintainerRalf Laemmel, Joost Visser
Stabilityexperimental
Portabilityportable
Safe HaskellSafe
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.