runNonDet Modulefused-effects-1.1.2.7Haskell2010
Control.Carrier.NonDet.Church
Provides NonDetC, a carrier for NonDet effects providing choice and failure.
Under the hood, it uses a Church-encoded structure and a binary tree to prevent the problems associated with a naïve list-based implementation.
- 1 type
- 3 values
- Packagefused-effects-1.1.2.7
- Exports4
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceChurch.hs
NonDet carrier
4 declarationsRun a NonDet effect, collecting all branches’ results into an Alternative functor.
Using [] as the Alternative functor will produce all results, while Maybe will return only the first. However, unless used with cull, this will still enumerate the entire search space before returning, meaning that it will diverge for infinite search spaces, even when using Maybe.
runNonDetA (pure a) = pure [a]
runNonDetA (pure a) = pure (Just a)
A carrier for NonDet effects based on Ralf Hinze’s design described in Deriving Backtracking Monad Transformers.
Constructors
NonDetC (forall b. (m b -> m b -> m b) -> (a -> m b) -> m b -> m b)
Instances10MonadTrans, Monad, Functor, MonadFix, MonadFail, Applicative, …
MonadTrans NonDetCDefined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchMonad (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchFunctor (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchMonadFix m => MonadFix (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchSeparate fixpoints are computed for each branch.
MonadFail m => MonadFail (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchApplicative (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchAlternative (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchMonadPlus (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchMonadIO m => MonadIO (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchAlgebra sig m => Algebra (NonDet :+: sig) (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.Church
NonDet effects
0 declarationsmodule Control.Effect.NonDet