module Object where
{
import Data.Witness;
import Data.OpenWitness;
data Object s = forall a. MkObject (OpenWitness s a) a;
matchObject :: OpenWitness s b -> Object s -> Maybe b;
matchObject uqb (MkObject uqa a) = do
{
MkEqualType <- testEquality uqa uqb;
return a;
};
makeConversions :: OpenWitness s b -> (b -> Object s,Object s -> Maybe b);
makeConversions wit = (MkObject wit,matchObject wit);
getConversions :: OW s (b -> Object s,Object s -> Maybe b);
getConversions = do
{
wit <- newOpenWitnessOW;
return (makeConversions wit);
};
}