checkApply :: Term -> Term -> Object -> Either Error Term
checkApply (C (Quant _ t1 c)) t2 o =
  if unify t1 t2 then return (C (substContext c o)) else Left (TypeMismatch t1 t2)
checkApply :: Term -> Term -> Object -> Either Error Term
checkApply (C (Quant _ t1 c)) t2 o =
  if unify t1 t2 then return (C (substContext c o)) else Left (TypeMismatch t1 t2)
checkApply (C (Quant _ t1 c)) t2 o =
  if unify t1 t2 then return (C (substContext c o)) else Left (TypeMismatch t1 t2)