Cull effects are used with Control.Effect.Choose to provide control over branching.
Modulefused-effects-1.1.2.7Haskell2010
Control.Effect.Cull
Provides an effect to cull choices in a given nondeterministic context. This effect is used in concert with NonDet.
Computations run inside a call to cull will return at most one result.
Predefined carriers:
- 2 types
- 1 class
- 2 values
- Packagefused-effects-1.1.2.7
- Exports5
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceCull.hs
Cull effect
2 declarationsRe-exports
3 declarationsclass Monad m => Algebra (sig :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) | m -> sig whereThe class of carriers (results) for algebras (effect handlers) over signatures (effects), whose actions are given by the alg method.
Instances53Algebra, …
Algebra Choose NonEmptyDefined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra Empty MaybeDefined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra NonDet []Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra sig (Choosing m)Defined in fused-effects-1.1.2.7 · Control.Effect.ChooseAlgebra sig m => Algebra sig (Ap m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra sig (Alt m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra sig (IdentityT m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra (Lift Identity) IdentityDefined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra (Lift IO) IODefined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra (Error e) (Either e)Defined in fused-effects-1.1.2.7 · Control.AlgebraMonad m => Algebra (Lift m) (LiftC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.LiftMonoid w => Algebra (Writer w) (Tuple2 w)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra (Reader r) ((->) r)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (Choose :+: sig) (ChooseC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Choose.ChurchAlgebra sig m => Algebra (Cull :+: (NonDet :+: sig)) (CullC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Cull.ChurchAlgebra sig m => Algebra (Cut :+: (NonDet :+: sig)) (CutC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Cut.ChurchAlgebra sig m => Algebra (Empty :+: sig) (EmptyC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Empty.ChurchAlgebra sig m => Algebra (Empty :+: sig) (EmptyC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Empty.MaybeAlgebra sig m => Algebra (Empty :+: sig) (MaybeT m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (Fail :+: sig) (FailC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Fail.EitherAlgebra sig m => Algebra (Fresh :+: sig) (FreshC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Fresh.ChurchAlgebra sig m => Algebra (Fresh :+: sig) (FreshC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Fresh.StrictAlgebra sig m => Algebra (NonDet :+: sig) (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchAlgebra sig m => Algebra (Trace :+: sig) (TraceC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Trace.IgnoringAlgebra sig m => Algebra (Trace :+: sig) (TraceC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Trace.Returning(MonadIO m, Algebra sig m) => Algebra (Trace :+: sig) (TraceC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Trace.PrintingAlgebra sig m => Algebra (Error e :+: sig) (ErrorC e m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Error.ChurchAlgebra sig m => Algebra (Error e :+: sig) (ErrorC e m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Error.EitherAlgebra sig m => Algebra (Error e :+: sig) (ExceptT e m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (Reader r :+: sig) (ReaderC r m)Defined in fused-effects-1.1.2.7 · Control.Carrier.ReaderAlgebra sig m => Algebra (Reader r :+: sig) (ReaderT r m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (State s :+: sig) (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.ChurchAlgebra sig m => Algebra (State s :+: sig) (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.LazyAlgebra sig m => Algebra (State s :+: sig) (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.StrictAlgebra sig m => Algebra (State s :+: sig) (StateT s m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (State s :+: sig) (StateT s m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (Throw e :+: sig) (ThrowC e m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Throw.Either(Algebra sig m, Monoid w) => Algebra (Accum w :+: sig) (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.Church(Algebra sig m, Monoid w) => Algebra (Accum w :+: sig) (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.Strict(Algebra sig m, Monoid w) => Algebra (Accum w :+: sig) (AccumT w m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Monoid w) => Algebra (Writer w :+: sig) (WriterC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Writer.Church(Algebra sig m, Monoid w) => Algebra (Writer w :+: sig) (WriterT w m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Monoid w) => Algebra (Writer w :+: sig) (WriterT w m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Monoid w) => Algebra (Writer w :+: sig) (WriterT w m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Semigroup w, MonadIO m) => Algebra (Accum w :+: sig) (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORef(Monoid w, Algebra sig m) => Algebra (Writer w :+: sig) (WriterC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Writer.Strict(MonadIO m, Algebra sig m) => Algebra (State s :+: sig) (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.IORef(Reifies s (Interpreter eff m), Algebra sig m) => Algebra (eff :+: sig) (InterpretC s eff m)Defined in fused-effects-1.1.2.7 · Control.Carrier.InterpretAlgebra (eff :+: sig) (sub m) => Algebra (Labelled label eff :+: sig) (Labelled label sub m)Defined in fused-effects-1.1.2.7 · Control.Effect.Labelled(Algebra sig m, Monoid w) => Algebra (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Monoid w) => Algebra (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Monoid w) => Algebra (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m)Defined in fused-effects-1.1.2.7 · Control.Algebra(LabelledMember label sub sig, Algebra sig m) => Algebra (sub :+: sig) (UnderLabel label sub m)Defined in fused-effects-1.1.2.7 · Control.Effect.Labelled
type Has (eff :: (Type -> Type) -> Type -> Type) (sig :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) = (Members eff sig, Algebra sig m)m is a carrier for sig containing eff.
Note that if eff is a sum, it will be decomposed into multiple Member constraints. While this technically allows one to combine multiple unrelated effects into a single Has constraint, doing so has two significant drawbacks:
Due to a problem with recursive type families, this can lead to significantly slower compiles.
It defeats
ghc’s warnings for redundant constraints, and thus can lead to a proliferation of redundant constraints as code is changed.
Run an action exhausted of effects to produce its final result value.