Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.Type.OpenWitness
Synopsis
- data OpenWitness a (b :: k)
- data RealWorld
- type IOWitness = OpenWitness RealWorld :: k -> Type
- newIOWitness :: forall {k} (a :: k). IO (IOWitness a)
- data OW (s :: k) a
- newOpenWitnessOW :: forall {k} s (a :: k). OW s (OpenWitness s a)
- runOW :: (forall (s :: k). OW s a) -> a
- owToIO :: OW RealWorld a -> IO a
- iowitness :: TypeQ -> Q Exp
- hashOpenWitness :: forall {k} t s (a :: k). Hashable t => OpenWitness s a -> t -> OpenWitness s a
Documentation
data OpenWitness a (b :: k) Source #
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 -> Type) Source # | |
Defined in Data.Type.OpenWitness Methods testEquality :: forall (a :: k) (b :: k). OpenWitness s a -> OpenWitness s b -> Maybe (a :~: b) # | |
TestOrder (OpenWitness s :: k -> Type) Source # | |
Defined in Data.Type.OpenWitness Methods testCompare :: forall (a :: k) (b :: k). OpenWitness s a -> OpenWitness s b -> WOrdering a b # | |
TestHetEquality (OpenWitness s) Source # | |
Defined in Data.Type.OpenWitness Methods testHetEquality :: forall ka (a :: ka) kb (b :: kb). OpenWitness s a -> OpenWitness s b -> Maybe (a :~~: b) # | |
Eq (OpenWitness s a) Source # | |
Defined in Data.Type.OpenWitness Methods (==) :: OpenWitness s a -> OpenWitness s a -> Bool # (/=) :: OpenWitness s a -> OpenWitness s a -> Bool # |
type IOWitness = OpenWitness RealWorld :: k -> Type Source #
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 {k} s (a :: k). OW s (OpenWitness s a) Source #
Generate a new OpenWitness
in OW
.
hashOpenWitness :: forall {k} t s (a :: k). Hashable t => OpenWitness s a -> t -> OpenWitness s a Source #