
Data.Generics.Strafunski.StrategyLib.OverloadingTheme  Portability  portable  Stability  experimental  Maintainer  Ralf Laemmel, Joost Visser 





Description 
This module is part of StrategyLib, a library of functional strategy
combinators, including combinators for generic traversal. This module
overloads basic combinators to enable uniform treatment of TU and TP
strategies. The overloading scheme is motivated in the
... Polymorphic Symphony paper. The names in the present module
deviate from the paper in that they are postfixed by an ...S
in order to rule out name clashes and to avoid labourintensive
resolution. The class constraints in this module seem to be outrageous
but this has to do with a type inferencing bug for class hierarchies
in hugs. This bug is removed in the October 2002 release.


Synopsis 




Unconstrained


class Monad m => Strategy s m where 
Overload completely unconstrained strategy combinators
  Methods  voidS :: s m > TU () m   seqS :: TP m > s m > s m  Sequential composition
  passS :: TU a m > (a > s m) > s m  Sequential composition with value passing

  Instances  


class (Strategy s m, Monad m, Term t) => StrategyApply s m t x  s t > x where 
Overload apply and adhoc combinators
  Methods  applyS :: s m > t > m x  Strategy application
  adhocS :: s m > (t > m x) > s m  Dynamic type case

  Instances  


Involving Monoid, MonadPlus,


class (Monad m, Strategy s m) => StrategyMonoid s m where 
Overload basic combinators which might involve a monoid
  Methods  skipS :: s m  Identity (success)
  allS :: s m > s m  Push down to all children
  combS :: s m > s m > s m  Combine sequentially

  Instances  


class (Strategy s m, Monad m, MonadPlus m) => StrategyPlus s m where 
Overload basic combinators which involve MonadPlus
  Methods  failS :: s m  Failure
  choiceS :: s m > s m > s m  Choice
  oneS :: s m > s m  Push down to a single child

  Instances  


monoS :: (StrategyApply s m t x, StrategyPlus s m) => (t > m x) > s m 
Overloaded lifting with failure


Effect substitution (see EffectTheme).


class StrategyMSubst s where 
Overload msubst combinator (Experimental)
  Methods  msubstS :: (Monad m, Monad m') => (forall t . m t > m' t) > s m > s m'  Substitute one monad for another

  Instances  


Produced by Haddock version 0.8 