The selection monad, which is non-strict.
Moduletransformers-0.6.3.0Haskell2010
Control.Monad.Trans.Select
Selection monad transformer, modelling search algorithms.
Martin Escardo and Paulo Oliva. "Selection functions, bar recursion and backward induction", Mathematical Structures in Computer Science 20:2 (2010), pp. 127-168. https://www.cs.bham.ac.uk/~mhe/papers/selection-escardo-oliva.pdf
Jules Hedges. "Monad transformers for backtracking search". In Proceedings of MSFP 2014. https://arxiv.org/abs/1406.2058
- 2 types
- 5 values
- Packagetransformers-0.6.3.0
- Exports7
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceSelect.hs
The Select monad
4 declarationsConstructor for computations in the selection monad.
Runs a Select computation with a function for evaluating answers
to select a particular answer. (The inverse of select.)
The SelectT monad transformer
2 declarationsSelection monad transformer.
SelectT is not a functor on the category of monads, and many operations cannot be lifted through it.
SelectT r m is strict if and only if m is.
Constructors
SelectTrunSelectT :: (a -> m r) -> m aRuns a
SelectTcomputation with a function for evaluating answers to select a particular answer.
Instances10MonadTrans, Monad, Functor, MonadFail, Applicative, Alternative, …
MonadTrans (SelectT r)Defined in transformers-0.6.3.0 · Control.Monad.Trans.SelectMonad m => Monad (SelectT r m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.SelectFunctor m => Functor (SelectT r m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.SelectMonadFail m => MonadFail (SelectT r m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.Select(Functor m, Monad m) => Applicative (SelectT r m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.Select(Functor m, MonadPlus m) => Alternative (SelectT r m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.SelectMonadPlus m => MonadPlus (SelectT r m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.SelectMonadIO m => MonadIO (SelectT r m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.SelectGeneric (SelectT r m a)Defined in transformers-0.6.3.0 · Control.Monad.Trans.Selecttype Rep (SelectT r m a) = D1 ('MetaDataDefined in transformers-0.6.3.0 · Control.Monad.Trans.Select"SelectT"
"Control.Monad.Trans.Select"
"transformers-0.6.3.0-24a4"
'True) (C1 ('MetaCons"SelectT"
'PrefixI 'True) (S1 ('MetaSel ('Just"runSelectT"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ((a -> m r) -> m a))))
Apply a function to transform the result of a selection computation.
This has a more restricted type than the map operations for other
monad transformers, because SelectT does not define a functor in
the category of monads.
runSelectT (mapSelectT f m) = f . runSelectT m
Monad transformation
1 declarationConvert a selection computation to a continuation-passing computation.