data-effects-core-0.4.2.0: A basic framework for effect systems based on effects represented by GADTs.
Copyright(c) 2023-2024 Sayo contributors
LicenseMPL-2.0 (see the file LICENSE)
Maintainer[email protected]
Safe HaskellNone
LanguageGHC2021

Data.Effect

Description

 
Synopsis

Documentation

type Effect = (Type -> Type) -> Type -> Type Source #

The kind for effects.

data EffectOrder Source #

An order of effect.

Constructors

FirstOrder 
HigherOrder 

type family OrderOf (e :: Effect) :: EffectOrder Source #

Instances

Instances details
type OrderOf Choose Source # 
Instance details

Defined in Data.Effect

type OrderOf ChooseH Source # 
Instance details

Defined in Data.Effect

type OrderOf Empty Source # 
Instance details

Defined in Data.Effect

type OrderOf Fail Source # 
Instance details

Defined in Data.Effect

type OrderOf Fix Source # 
Instance details

Defined in Data.Effect

type OrderOf Nop Source # 
Instance details

Defined in Data.Effect

type OrderOf (Ask r) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Ask r) = 'FirstOrder
type OrderOf (CC ref) Source # 
Instance details

Defined in Data.Effect

type OrderOf (CC ref) = 'FirstOrder
type OrderOf (Catch e) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Emb e) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Emb e) = 'FirstOrder
type OrderOf (Local r) Source # 
Instance details

Defined in Data.Effect

type OrderOf (State s) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Tell w) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Tell w) = 'FirstOrder
type OrderOf (Throw e) Source # 
Instance details

Defined in Data.Effect

type OrderOf (UnliftBase b) Source # 
Instance details

Defined in Data.Effect

type OrderOf (WriterH w) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Union es) Source # 
Instance details

Defined in Data.Effect.OpenUnion

type OrderOf (HCont ff b) Source # 
Instance details

Defined in Data.Effect.HFunctor.HCont

type OrderOf (HCont ff b) = 'HigherOrder
type OrderOf (Tagged tag e) Source # 
Instance details

Defined in Data.Effect.Tag

type OrderOf (Tagged tag e) = OrderOf e

type family OrderCase (o :: EffectOrder) (a :: k) (b :: k) :: k where ... Source #

Equations

OrderCase 'FirstOrder (a :: k) (b :: k) = a 
OrderCase 'HigherOrder (a :: k) (b :: k) = b 

data EffectForm Source #

Constructors

Polynomial 
Exponential 

Instances

Instances details
Show EffectForm Source # 
Instance details

Defined in Data.Effect

Eq EffectForm Source # 
Instance details

Defined in Data.Effect

Ord EffectForm Source # 
Instance details

Defined in Data.Effect

type family FormOf (e :: Effect) :: EffectForm Source #

Instances

Instances details
type FormOf Choose Source # 
Instance details

Defined in Data.Effect

type FormOf ChooseH Source # 
Instance details

Defined in Data.Effect

type FormOf Empty Source # 
Instance details

Defined in Data.Effect

type FormOf Fail Source # 
Instance details

Defined in Data.Effect

type FormOf Fix Source # 
Instance details

Defined in Data.Effect

type FormOf Nop Source # 
Instance details

Defined in Data.Effect

type FormOf (Ask r) Source # 
Instance details

Defined in Data.Effect

type FormOf (Ask r) = 'Polynomial
type FormOf (CC ref) Source # 
Instance details

Defined in Data.Effect

type FormOf (CC ref) = 'Polynomial
type FormOf (Catch e) Source # 
Instance details

Defined in Data.Effect

type FormOf (Catch e) = 'Polynomial
type FormOf (Emb e) Source # 
Instance details

Defined in Data.Effect

type FormOf (Emb e) = 'Polynomial
type FormOf (Local r) Source # 
Instance details

Defined in Data.Effect

type FormOf (Local r) = 'Polynomial
type FormOf (State s) Source # 
Instance details

Defined in Data.Effect

type FormOf (State s) = 'Polynomial
type FormOf (Tell w) Source # 
Instance details

Defined in Data.Effect

type FormOf (Tell w) = 'Polynomial
type FormOf (Throw e) Source # 
Instance details

Defined in Data.Effect

type FormOf (Throw e) = 'Polynomial
type FormOf (UnliftBase b) Source # 
Instance details

Defined in Data.Effect

type FormOf (WriterH w) Source # 
Instance details

Defined in Data.Effect

type family FormCase (f :: EffectForm) (a :: k) (b :: k) :: k where ... Source #

Equations

FormCase 'Polynomial (a :: k) (b :: k) = a 
FormCase 'Exponential (a :: k) (b :: k) = b 

type family LabelOf (e :: Effect) Source #

Instances

Instances details
type LabelOf Choose Source # 
Instance details

Defined in Data.Effect

type LabelOf ChooseH Source # 
Instance details

Defined in Data.Effect

type LabelOf Empty Source # 
Instance details

Defined in Data.Effect

type LabelOf Fail Source # 
Instance details

Defined in Data.Effect

type LabelOf Fix Source # 
Instance details

Defined in Data.Effect

type LabelOf Nop Source # 
Instance details

Defined in Data.Effect

type LabelOf (Ask r) Source # 
Instance details

Defined in Data.Effect

type LabelOf (Ask r) = AskLabel
type LabelOf (CC ref) Source # 
Instance details

Defined in Data.Effect

type LabelOf (CC ref) = CCLabel
type LabelOf (Catch e) Source # 
Instance details

Defined in Data.Effect

type LabelOf (Emb e) Source # 
Instance details

Defined in Data.Effect

type LabelOf (Emb e) = EmbLabel e
type LabelOf (Local r) Source # 
Instance details

Defined in Data.Effect

type LabelOf (State s) Source # 
Instance details

Defined in Data.Effect

type LabelOf (Tell w) Source # 
Instance details

Defined in Data.Effect

type LabelOf (Throw e) Source # 
Instance details

Defined in Data.Effect

type LabelOf (UnliftBase b) Source # 
Instance details

Defined in Data.Effect

type LabelOf (WriterH w) Source # 
Instance details

Defined in Data.Effect

type LabelOf (Tagged tag e) Source # 
Instance details

Defined in Data.Effect.Tag

type LabelOf (Tagged tag e) = TaggedLabel tag (LabelOf e)

class (OrderOf e ~ 'FirstOrder, forall (f :: Type -> Type) (g :: Type -> Type) a. Coercible (e f a) (e g a)) => FirstOrder (e :: Effect) Source #

Instances

Instances details
FirstOrder Choose Source # 
Instance details

Defined in Data.Effect

FirstOrder Empty Source # 
Instance details

Defined in Data.Effect

FirstOrder Fail Source # 
Instance details

Defined in Data.Effect

FirstOrder Nop Source # 
Instance details

Defined in Data.Effect

FirstOrder (Ask r) Source # 
Instance details

Defined in Data.Effect

FirstOrder (CC ref) Source # 
Instance details

Defined in Data.Effect

FirstOrder (Emb e) Source # 
Instance details

Defined in Data.Effect

FirstOrder (State s) Source # 
Instance details

Defined in Data.Effect

FirstOrder (Tell w) Source # 
Instance details

Defined in Data.Effect

FirstOrder (Throw e) Source # 
Instance details

Defined in Data.Effect

FirstOrder e => FirstOrder (Tagged tag e) Source # 
Instance details

Defined in Data.Effect.Tag

class FormOf e ~ 'Polynomial => PolyHFunctor (e :: Effect) Source #

A higher-order polynomial functor.

Instances

Instances details
PolyHFunctor Choose Source # 
Instance details

Defined in Data.Effect

PolyHFunctor ChooseH Source # 
Instance details

Defined in Data.Effect

PolyHFunctor Empty Source # 
Instance details

Defined in Data.Effect

PolyHFunctor Fail Source # 
Instance details

Defined in Data.Effect

PolyHFunctor Fix Source # 
Instance details

Defined in Data.Effect

PolyHFunctor Nop Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (Ask r) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (CC ref) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (Catch e) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (Emb e) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (Local r) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (State s) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (Tell w) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (Throw e) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (WriterH w) Source # 
Instance details

Defined in Data.Effect

Nop Effect

data Nop (a :: Type -> Type) b Source #

A effect with no operations.

Instances

Instances details
FirstOrder Nop Source # 
Instance details

Defined in Data.Effect

PolyHFunctor Nop Source # 
Instance details

Defined in Data.Effect

HFunctor Nop Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Nop f a -> Nop g a Source #

type FormOf Nop Source # 
Instance details

Defined in Data.Effect

type LabelOf Nop Source # 
Instance details

Defined in Data.Effect

type OrderOf Nop Source # 
Instance details

Defined in Data.Effect

Embedding Effect

newtype Emb (e :: Type -> Type) (f :: Type -> Type) a Source #

Constructors

Emb 

Fields

Instances

Instances details
FirstOrder (Emb e) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (Emb e) Source # 
Instance details

Defined in Data.Effect

HFunctor (Emb e) Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Emb e f a -> Emb e g a Source #

Foldable e => Foldable (Emb e f) Source # 
Instance details

Defined in Data.Effect

Methods

fold :: Monoid m => Emb e f m -> m #

foldMap :: Monoid m => (a -> m) -> Emb e f a -> m #

foldMap' :: Monoid m => (a -> m) -> Emb e f a -> m #

foldr :: (a -> b -> b) -> b -> Emb e f a -> b #

foldr' :: (a -> b -> b) -> b -> Emb e f a -> b #

foldl :: (b -> a -> b) -> b -> Emb e f a -> b #

foldl' :: (b -> a -> b) -> b -> Emb e f a -> b #

foldr1 :: (a -> a -> a) -> Emb e f a -> a #

foldl1 :: (a -> a -> a) -> Emb e f a -> a #

toList :: Emb e f a -> [a] #

null :: Emb e f a -> Bool #

length :: Emb e f a -> Int #

elem :: Eq a => a -> Emb e f a -> Bool #

maximum :: Ord a => Emb e f a -> a #

minimum :: Ord a => Emb e f a -> a #

sum :: Num a => Emb e f a -> a #

product :: Num a => Emb e f a -> a #

Traversable e => Traversable (Emb e f) Source # 
Instance details

Defined in Data.Effect

Methods

traverse :: Applicative f0 => (a -> f0 b) -> Emb e f a -> f0 (Emb e f b) #

sequenceA :: Applicative f0 => Emb e f (f0 a) -> f0 (Emb e f a) #

mapM :: Monad m => (a -> m b) -> Emb e f a -> m (Emb e f b) #

sequence :: Monad m => Emb e f (m a) -> m (Emb e f a) #

Applicative e => Applicative (Emb e f) Source # 
Instance details

Defined in Data.Effect

Methods

pure :: a -> Emb e f a #

(<*>) :: Emb e f (a -> b) -> Emb e f a -> Emb e f b #

liftA2 :: (a -> b -> c) -> Emb e f a -> Emb e f b -> Emb e f c #

(*>) :: Emb e f a -> Emb e f b -> Emb e f b #

(<*) :: Emb e f a -> Emb e f b -> Emb e f a #

Functor e => Functor (Emb e f) Source # 
Instance details

Defined in Data.Effect

Methods

fmap :: (a -> b) -> Emb e f a -> Emb e f b #

(<$) :: a -> Emb e f b -> Emb e f a #

Monad e => Monad (Emb e f) Source # 
Instance details

Defined in Data.Effect

Methods

(>>=) :: Emb e f a -> (a -> Emb e f b) -> Emb e f b #

(>>) :: Emb e f a -> Emb e f b -> Emb e f b #

return :: a -> Emb e f a #

type FormOf (Emb e) Source # 
Instance details

Defined in Data.Effect

type FormOf (Emb e) = 'Polynomial
type LabelOf (Emb e) Source # 
Instance details

Defined in Data.Effect

type LabelOf (Emb e) = EmbLabel e
type OrderOf (Emb e) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Emb e) = 'FirstOrder

data EmbLabel (e :: Type -> Type) Source #

newtype Unemb (e :: k -> k1 -> Type) (a :: k1) Source #

Constructors

Unemb 

Fields

Reader Effects

data Ask r (a :: Type -> Type) b where Source #

An effect that holds a value of type r in the context (environment).

Constructors

Ask :: forall r (a :: Type -> Type). Ask r a r

Obtain a value from the environment.

Instances

Instances details
FirstOrder (Ask r) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (Ask r) Source # 
Instance details

Defined in Data.Effect

HFunctor (Ask r) Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Ask r f a -> Ask r g a Source #

type FormOf (Ask r) Source # 
Instance details

Defined in Data.Effect

type FormOf (Ask r) = 'Polynomial
type LabelOf (Ask r) Source # 
Instance details

Defined in Data.Effect

type LabelOf (Ask r) = AskLabel
type OrderOf (Ask r) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Ask r) = 'FirstOrder

data Local r (a :: Type -> Type) b where Source #

An effect that locally modifies the value held in the environment.

Constructors

Local

Locally modifies the value held in the environment.

Fields

  • :: forall r (a :: Type -> Type) b. (r -> r)

    A function that transforms the original value to the modified value.

  • -> a b

    The local scope where the modification is applied.

  • -> Local r a b
     

Instances

Instances details
PolyHFunctor (Local r) Source # 
Instance details

Defined in Data.Effect

HFunctor (Local r) Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Local r f a -> Local r g a Source #

type FormOf (Local r) Source # 
Instance details

Defined in Data.Effect

type FormOf (Local r) = 'Polynomial
type LabelOf (Local r) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Local r) Source # 
Instance details

Defined in Data.Effect

State Effect

data State s (a :: Type -> Type) b where Source #

An effect for holding mutable state values in the context.

Constructors

Get :: forall s (a :: Type -> Type). State s a s

Retrieves the current state value from the context.

Put :: forall s (a :: Type -> Type). s -> State s a ()

Overwrites the state value in the context.

Instances

Instances details
FirstOrder (State s) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (State s) Source # 
Instance details

Defined in Data.Effect

HFunctor (State s) Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> State s f a -> State s g a Source #

type FormOf (State s) Source # 
Instance details

Defined in Data.Effect

type FormOf (State s) = 'Polynomial
type LabelOf (State s) Source # 
Instance details

Defined in Data.Effect

type OrderOf (State s) Source # 
Instance details

Defined in Data.Effect

Writer Effects

data Tell w (a :: Type -> Type) b where Source #

An effect that can accumulate values monoidally in a context.

Constructors

Tell :: forall w (a :: Type -> Type). w -> Tell w a ()

Accumulates new values to the cumulative value held in the context.

Instances

Instances details
FirstOrder (Tell w) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (Tell w) Source # 
Instance details

Defined in Data.Effect

HFunctor (Tell w) Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Tell w f a -> Tell w g a Source #

type FormOf (Tell w) Source # 
Instance details

Defined in Data.Effect

type FormOf (Tell w) = 'Polynomial
type LabelOf (Tell w) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Tell w) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Tell w) = 'FirstOrder

data WriterH w (a :: Type -> Type) b where Source #

An effect that performs local operations on accumulations in the context on a per-scope basis.

Constructors

Listen

Obtains the accumulated value in the scope and returns it together as a pair.

Fields

  • :: forall (a :: Type -> Type) a1 w. a a1

    The scope from which to obtain the accumulation.

  • -> WriterH w a (w, a1)
     
Censor

Modifies the accumulation in the scope based on the given function.

Fields

  • :: forall w (a :: Type -> Type) b. (w -> w)

    A function for modifying the accumulated value.

  • -> a b

    The scope where the modification is applied.

  • -> WriterH w a b
     

Instances

Instances details
PolyHFunctor (WriterH w) Source # 
Instance details

Defined in Data.Effect

HFunctor (WriterH w) Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> WriterH w f a -> WriterH w g a Source #

type FormOf (WriterH w) Source # 
Instance details

Defined in Data.Effect

type LabelOf (WriterH w) Source # 
Instance details

Defined in Data.Effect

type OrderOf (WriterH w) Source # 
Instance details

Defined in Data.Effect

Exception Effects

data Throw e (a :: Type -> Type) b where Source #

An effect to escape from the normal control structure with an exception value of type e in the middle of a context.

Constructors

Throw :: forall e (a :: Type -> Type) b. e -> Throw e a b

Throws an exception; that is, escapes from the normal control structure with an exception value in the middle of a context.

Instances

Instances details
FirstOrder (Throw e) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (Throw e) Source # 
Instance details

Defined in Data.Effect

HFunctor (Throw e) Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Throw e f a -> Throw e g a Source #

type FormOf (Throw e) Source # 
Instance details

Defined in Data.Effect

type FormOf (Throw e) = 'Polynomial
type LabelOf (Throw e) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Throw e) Source # 
Instance details

Defined in Data.Effect

data Catch e (a :: Type -> Type) b where Source #

An effect to catch exceptions.

Constructors

Catch

Catches exceptions within a scope and processes them according to the given exception handler.

Fields

  • :: forall (a :: Type -> Type) b e. a b

    The scope in which to catch exceptions.

  • -> (e -> a b)

    Exception handler. Defines the processing to perform when an exception is thrown within the scope.

  • -> Catch e a b
     

Instances

Instances details
PolyHFunctor (Catch e) Source # 
Instance details

Defined in Data.Effect

HFunctor (Catch e) Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Catch e f a -> Catch e g a Source #

type FormOf (Catch e) Source # 
Instance details

Defined in Data.Effect

type FormOf (Catch e) = 'Polynomial
type LabelOf (Catch e) Source # 
Instance details

Defined in Data.Effect

type OrderOf (Catch e) Source # 
Instance details

Defined in Data.Effect

Non-Determinism Effects

data Empty (a :: Type -> Type) b where Source #

An effect that eliminates a branch by causing the current branch context of a non-deterministic computation to fail.

Constructors

Empty :: forall (a :: Type -> Type) b. Empty a b

Eliminates a branch by causing the current branch context of a non-deterministic computation to fail.

Instances

Instances details
FirstOrder Empty Source # 
Instance details

Defined in Data.Effect

PolyHFunctor Empty Source # 
Instance details

Defined in Data.Effect

HFunctor Empty Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Empty f a -> Empty g a Source #

type FormOf Empty Source # 
Instance details

Defined in Data.Effect

type LabelOf Empty Source # 
Instance details

Defined in Data.Effect

type OrderOf Empty Source # 
Instance details

Defined in Data.Effect

data Choose (a :: Type -> Type) b where Source #

An effect that splits the computation into two branches.

Constructors

Choose :: forall (a :: Type -> Type). Choose a Bool

Splits the computation into two branches. As a result of executing choose, the world branches into one where False is returned and one where True is returned.

Instances

Instances details
FirstOrder Choose Source # 
Instance details

Defined in Data.Effect

PolyHFunctor Choose Source # 
Instance details

Defined in Data.Effect

HFunctor Choose Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Choose f a -> Choose g a Source #

type FormOf Choose Source # 
Instance details

Defined in Data.Effect

type LabelOf Choose Source # 
Instance details

Defined in Data.Effect

type OrderOf Choose Source # 
Instance details

Defined in Data.Effect

data ChooseH (a :: Type -> Type) b where Source #

An effect that executes two branches as scopes. A higher-order version of the Choose effect.

Constructors

ChooseH :: forall (a :: Type -> Type) b. a b -> a b -> ChooseH a b

Executes the given two scopes as branches. Even if one fails due to the empty operation, the whole does not fail as long as the other does not fail.

Instances

Instances details
PolyHFunctor ChooseH Source # 
Instance details

Defined in Data.Effect

HFunctor ChooseH Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> ChooseH f a -> ChooseH g a Source #

type FormOf ChooseH Source # 
Instance details

Defined in Data.Effect

type LabelOf ChooseH Source # 
Instance details

Defined in Data.Effect

type OrderOf ChooseH Source # 
Instance details

Defined in Data.Effect

Fail Effect

data Fail (a :: Type -> Type) b where Source #

Constructors

Fail :: forall (a :: Type -> Type) b. String -> Fail a b 

Instances

Instances details
FirstOrder Fail Source # 
Instance details

Defined in Data.Effect

PolyHFunctor Fail Source # 
Instance details

Defined in Data.Effect

HFunctor Fail Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Fail f a -> Fail g a Source #

type FormOf Fail Source # 
Instance details

Defined in Data.Effect

type LabelOf Fail Source # 
Instance details

Defined in Data.Effect

type OrderOf Fail Source # 
Instance details

Defined in Data.Effect

Fix Effect

data Fix (a :: Type -> Type) b where Source #

Constructors

Efix :: forall b (a :: Type -> Type). (b -> a b) -> Fix a b 

Instances

Instances details
PolyHFunctor Fix Source # 
Instance details

Defined in Data.Effect

HFunctor Fix Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> Fix f a -> Fix g a Source #

type FormOf Fix Source # 
Instance details

Defined in Data.Effect

type LabelOf Fix Source # 
Instance details

Defined in Data.Effect

type OrderOf Fix Source # 
Instance details

Defined in Data.Effect

Unlift Effect

data UnliftBase (b :: Type -> Type) (f :: Type -> Type) a where Source #

Constructors

WithRunInBase :: forall (f :: Type -> Type) (b :: Type -> Type) a. ((forall x. f x -> b x) -> b a) -> UnliftBase b f a 

Instances

Instances details
HFunctor (UnliftBase b) Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> UnliftBase b f a -> UnliftBase b g a Source #

type FormOf (UnliftBase b) Source # 
Instance details

Defined in Data.Effect

type LabelOf (UnliftBase b) Source # 
Instance details

Defined in Data.Effect

type OrderOf (UnliftBase b) Source # 
Instance details

Defined in Data.Effect

CallCC Effect (Sub/Jump-based)

data CC (ref :: Type -> Type) (a :: Type -> Type) b where Source #

Constructors

SubFork :: forall (ref :: Type -> Type) (a :: Type -> Type) a1. CC ref a (Either (ref a1) a1) 
Jump :: forall (ref :: Type -> Type) a1 (a :: Type -> Type) b. ref a1 -> a1 -> CC ref a b 

Instances

Instances details
FirstOrder (CC ref) Source # 
Instance details

Defined in Data.Effect

PolyHFunctor (CC ref) Source # 
Instance details

Defined in Data.Effect

HFunctor (CC ref) Source # 
Instance details

Defined in Data.Effect

Methods

hfmap :: (forall x. f x -> g x) -> CC ref f a -> CC ref g a Source #

type FormOf (CC ref) Source # 
Instance details

Defined in Data.Effect

type FormOf (CC ref) = 'Polynomial
type LabelOf (CC ref) Source # 
Instance details

Defined in Data.Effect

type LabelOf (CC ref) = CCLabel
type OrderOf (CC ref) Source # 
Instance details

Defined in Data.Effect

type OrderOf (CC ref) = 'FirstOrder