Strafunski-StrategyLib-5.0.1.0: Library for strategic programming

Maintainer Ralf Laemmel, Joost Visser experimental portable Safe Haskell98

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 #

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 #

# 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 #