| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Carrier.NonDet.Church
Contents
Description
Synopsis
- runNonDet :: (m b -> m b -> m b) -> (a -> m b) -> m b -> NonDetC m a -> m b
- runNonDetA :: (Alternative f, Applicative m) => NonDetC m a -> m (f a)
- runNonDetM :: (Applicative m, Monoid b) => (a -> b) -> NonDetC m a -> m b
- newtype NonDetC (m :: Type -> Type) a = NonDetC (forall b. (m b -> m b -> m b) -> (a -> m b) -> m b -> m b)
- module Control.Effect.NonDet
NonDet carrier
runNonDetA :: (Alternative f, Applicative m) => NonDetC m a -> m (f a) Source #
Run 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(purea) =pure[a]
runNonDetA(purea) =pure(Justa)
Since: 1.0.0.0
runNonDetM :: (Applicative m, Monoid b) => (a -> b) -> NonDetC m a -> m b Source #
newtype NonDetC (m :: Type -> Type) a Source #
A carrier for NonDet effects based on Ralf Hinze’s design described in Deriving Backtracking Monad Transformers.
Since: 1.0.0.0
Constructors
| NonDetC (forall b. (m b -> m b -> m b) -> (a -> m b) -> m b -> m b) |
Instances
| MonadTrans NonDetC Source # | |
Defined in Control.Carrier.NonDet.Church | |
| Alternative (NonDetC m) Source # | |
| Applicative (NonDetC m) Source # | |
Defined in Control.Carrier.NonDet.Church | |
| Functor (NonDetC m) Source # | |
| Monad (NonDetC m) Source # | |
| MonadPlus (NonDetC m) Source # | |
| MonadFail m => MonadFail (NonDetC m) Source # | |
Defined in Control.Carrier.NonDet.Church | |
| MonadFix m => MonadFix (NonDetC m) Source # | Separate fixpoints are computed for each branch. |
Defined in Control.Carrier.NonDet.Church | |
| MonadIO m => MonadIO (NonDetC m) Source # | |
Defined in Control.Carrier.NonDet.Church | |
| Algebra sig m => Algebra (NonDet :+: sig) (NonDetC m) Source # | |
NonDet effects
module Control.Effect.NonDet