Safe Haskell | None |
---|---|
Language | Haskell2010 |
Control.Effect.Witness
- class MemberEffect Witness (Witness s) l => EffectWitness s l
- data Witness s a
- runWitness :: (forall s. Effect (Witness s :+ l) a) -> Effect l a
- data Token s a
- newToken :: EffectWitness s l => Effect l (Token s a)
Documentation
class MemberEffect Witness (Witness s) l => EffectWitness s l Source #
Instances
MemberEffect (* -> * -> *) Witness (Witness s) l => EffectWitness s l Source # | |
An effect describing the generation of unique identifiers.
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.
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.