TypeOperators
data a :-: b
data (a :+: b) c
data Op a b
newtype O g f a
Constructors
Fields
class a <=> b
biO :: (g `O` f) a
f :: a ~ b => a -> b
g :: (a ~ b, b ~ c) => a -> c
x :: (a :-: a) <=> (a `Op` a) => a
y :: (a <=> a, (a `Op` a) <=> a) => a