An alternative definition of the class Subst, using multi-parameter type- classes has been tested on hugs1.3c but does not work (because of ambiguous typing of idSubst). The diff compared to Unify.hs is the following: **************************************************************** 22c22 < appSubst :: (Subst s, Term t) => s t -> t -> t --- > appSubst :: (Subst s t, Term t) => s -> t -> t 50,53c50,53 < class Subst s where < idSubst :: s t < modBind :: (Var,t) -> s t -> s t < lookupIn :: s t -> Var -> Maybe t --- > class Subst s t where > idSubst :: s > modBind :: (Var,t) -> s -> s > lookupIn :: s -> Var -> Maybe t 55c55 < occursCheck :: (Term t,Subst s) => Var -> s t -> t -> Bool --- > occursCheck :: (Term t,Subst s t) => Var -> s -> t -> Bool 63,64c63,64 < unify :: (Term t,Subst s) => t -> t -> Maybe (s t) < unify' :: (Term t,Subst s) => t -> t -> s t -> Maybe (s t) --- > unify :: (Term t,Subst s t) => t -> t -> Maybe (s) > unify' :: (Term t,Subst s t) => t -> t -> s -> Maybe (s) 77c77 < (|->) :: (Term t, Subst s) => Var -> t -> s t -> Maybe (s t) --- > (|->) :: (Term t, Subst s t) => Var -> t -> s -> Maybe (s) ****************************************************************