witness-0.1: Data/Witness/SimpleWitness.hs
module Data.Witness.SimpleWitness where
{
import Data.Witness.EqualType;
-- | @w@ is a simple witness type if each value witnesses to a single type. Thus if two values are the same, then they have the same type.
;
class SimpleWitness w where
{
-- | If the two values are the same, then @a@ and @b@ are the same type.
--
-- As an equivalence relation, 'matchWitness' must be reflexive, commutative, and transitive.
;
matchWitness :: w a -> w b -> Maybe (EqualType a b);
};
}