| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.OpenWitness
Synopsis
- data OpenWitness :: * -> forall (k :: *). k -> *
- data RealWorld
- type IOWitness = OpenWitness RealWorld
- newIOWitness :: forall a. IO (IOWitness a)
- data OW s a
- newOpenWitnessOW :: forall s a. OW s (OpenWitness s a)
- runOW :: forall a. (forall s. OW s a) -> a
- owToIO :: OW RealWorld a -> IO a
- iowitness :: TypeQ -> Q Exp
Documentation
data OpenWitness :: * -> forall (k :: *). k -> * #
A witness type that can witness to any type.
But values cannot be constructed; they can only be generated in IO and certain other monads.
Instances
| TestEquality (OpenWitness s k :: k -> *) # | |
Defined in Data.OpenWitness Methods testEquality :: OpenWitness s k a -> OpenWitness s k b -> Maybe (a :~: b) # | |
| TestHetEquality (OpenWitness s) # | |
Defined in Data.OpenWitness Methods testHetEquality :: OpenWitness s ka a -> OpenWitness s kb b -> Maybe (HetEq a b) # | |
| Eq (OpenWitness s k a) # | |
Defined in Data.OpenWitness Methods (==) :: OpenWitness s k a -> OpenWitness s k a -> Bool # (/=) :: OpenWitness s k a -> OpenWitness s k a -> Bool # | |
type IOWitness = OpenWitness RealWorld #
An OpenWitness for IO.
A runnable monad in which OpenWitness values can be generated.
The s parameter plays the same role as it does in ST, preventing OpenWitness values from one run being used in another.
newOpenWitnessOW :: forall s a. OW s (OpenWitness s a) #
Generate a new OpenWitness in OW.