Selection monad.
Moduletransformers-0.6.1.1Haskell2010
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
- 6 values
- Packagetransformers-0.6.1.1
- Exports8
- 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
3 declarationsSelection monad transformer.
SelectT is not a functor on the category of monads, and many operations cannot be lifted through it.
Constructors
SelectT ((a -> m r) -> m a)
Instances10MonadTrans, Monad, Functor, MonadFail, Applicative, Alternative, …
MonadTrans (SelectT r)Defined in transformers-0.6.1.1 · Control.Monad.Trans.SelectMonad m => Monad (SelectT r m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.SelectFunctor m => Functor (SelectT r m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.SelectMonadFail m => MonadFail (SelectT r m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Select(Functor m, Monad m) => Applicative (SelectT r m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Select(Functor m, MonadPlus m) => Alternative (SelectT r m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.SelectMonadPlus m => MonadPlus (SelectT r m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.SelectMonadIO m => MonadIO (SelectT r m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.SelectGeneric (SelectT r m a)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Selecttype Rep (SelectT r m a) = D1 ('MetaDataDefined in transformers-0.6.1.1 · Control.Monad.Trans.Select"SelectT"
"Control.Monad.Trans.Select"
"transformers-0.6.1.1-a11a"
'True) (C1 ('MetaCons"SelectT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ((a -> m r) -> m a))))
Runs a SelectT computation with a function for evaluating answers
to select a particular answer. (The inverse of select.)
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.