HsTypeUtil.hs

module HsTypeUtil where
import HsTypeStruct

matchT tx ty =
    case (tx, ty) of
    (HsTyFun x1 x2, HsTyFun y1 y2)       -> Just [(x1, y1), (x2, y2)]
--  (HsTyTuple xs, HsTyTuple ys) | length xs == length ys -> Just $ zip xs ys
    (HsTyApp f x, HsTyApp g y)           -> Just [(f, g), (x, y)]
    (HsTyVar n1, HsTyVar n2) | n1 == n2  -> Just []
    (HsTyCon n1, HsTyCon n2) | n1 == n2  -> Just []
    (HsTyForall vs1 ps1 t1,HsTyForall vs2 ps2 t2) | vs1==vs2 && ps1==ps2 -> Just [(t1,t2)] -- hmm
    _                                    -> Nothing

{-
lookupHSNameInType :: TI i t -> Maybe i
lookupHSNameInType (HsTyVar n) = Just n
lookupHSNameInType (HsTyCon n) = Just n
lookupHSNameInType _           = Nothing
-}

{-
tupleToContext make t =
  case t of
    HsTyTuple ts -> ts
    _            -> [make t]
-}


{-
tyVar2id (HsTyVar x) = x
tyVar2id _           = error "tyVar2id: not a type variable."
-}

Plain-text version of HsTypeUtil.hs | Valid HTML?