class HasVariables a where | | | type Subst a = [(a, a)] | | empty :: Subst a | | unit :: a -> a -> Subst a | | vars :: (HasVariables a, Data a) => a -> [a] | | apply :: (HasVariables a, Eq a, Data a, Data b) => Subst a -> b -> b | | (@@) :: (HasVariables a, Eq a, Data a) => Subst a -> Subst a -> Subst a | | unify :: (HasVariables a, Eq a, Data a) => a -> a -> Maybe (Subst a) | | unif :: (HasVariables a, Eq a, Data a) => a -> a -> Maybe (Subst a) | | aux :: (HasVariables a, Eq a, Data a) => a -> a -> StateT (Subst a) Maybe a | | tmapM' :: (Data a, Data b, Monad m) => (b -> b -> m b) -> a -> a -> m a | | mkMM :: (Typeable a, Typeable b, Typeable c, Typeable d, Monad m) => (a -> b -> m b) -> c -> d -> m d | | unifyVar :: (Data a, HasVariables b, Eq b, Data b, Data c) => a -> b -> Maybe (Subst c) | | |
|