extensible-effects-3.1.0.2: An Alternative to Monad Transformers

Safe HaskellSafe
LanguageHaskell2010

Control.Eff.Choose

Contents

Description

Nondeterministic choice effect

Synopsis

Documentation

newtype Choose a Source #

Non-determinism (choice)

choose lst non-deterministically chooses one value from the lst choose [] thus corresponds to failure Unlike Reader, Choose is not a GADT because the type of values returned in response to a (Choose a) request is just a, without any constraints.

Constructors

Choose [a] 
Instances
(MonadBase m m, SetMember (Lift :: (Type -> Type) -> Type -> Type) (Lift m) r, MonadBaseControl m (Eff r)) => MonadBaseControl m (Eff (Choose ': r)) Source # 
Instance details

Defined in Control.Eff.Choose

Associated Types

type StM (Eff (Choose ': r)) a :: Type #

Methods

liftBaseWith :: (RunInBase (Eff (Choose ': r)) m -> m a) -> Eff (Choose ': r) a #

restoreM :: StM (Eff (Choose ': r)) a -> Eff (Choose ': r) a #

type StM (Eff (Choose ': r)) a Source # 
Instance details

Defined in Control.Eff.Choose

type StM (Eff (Choose ': r)) a = StM (Eff r) [a]

choose :: Member Choose r => [a] -> Eff r a Source #

choose lst non-deterministically chooses one value from the lst choose [] thus corresponds to failure

makeChoice :: forall a r. Eff (Choose ': r) a -> Eff r [a] Source #

Run a nondeterministic effect, returning all values.

mzero' :: Member Choose r => Eff r a Source #

MonadPlus-like operators are expressible via choose

mplus' :: Member Choose r => Eff r a -> Eff r a -> Eff r a Source #

MonadPlus-like operators are expressible via choose

Orphan instances

Member Choose r => Alternative (Eff r) Source #

MonadPlus-like operators are expressible via choose

Instance details

Methods

empty :: Eff r a #

(<|>) :: Eff r a -> Eff r a -> Eff r a #

some :: Eff r a -> Eff r [a] #

many :: Eff r a -> Eff r [a] #

Member Choose r => MonadPlus (Eff r) Source # 
Instance details

Methods

mzero :: Eff r a #

mplus :: Eff r a -> Eff r a -> Eff r a #