effin-0.2.1.2: A Typeable-free implementation of extensible effects

Safe HaskellNone
LanguageHaskell2010

Control.Effect.Witness

Synopsis

Documentation

class MemberEffect Witness (Witness s) l => EffectWitness s l Source

Instances

MemberEffect (* -> * -> *) Witness (Witness s) l => EffectWitness s l 

data Witness s a Source

An effect describing the generation of unique identifiers.

Instances

Functor (Witness s) 
type Is (* -> * -> *) Witness f 

runWitness :: (forall s. Effect (Witness s :+ l) a) -> Effect l a Source

Completely handles a Witness effect. The Rank-2 quantifier ensures that unique identifiers cannot escape the context in which they were created.

data Token s a Source

A unique identifier associated with a type a. If two tokens are equal, then so are their associated types. Use testEquality to safely cast between types.

Instances

TestEquality * (Token s) 
Eq (Token s a) 

newToken :: EffectWitness s l => Effect l (Token s a) Source

Generates a new, unique Token.