我写了一个 Haskell 函数,如下所示:
shift :: Subst a -> Subst a
shift (S s) = [(x, (subst s' d)) | (x,d) <- s] where
s' = [(x,d) | (x,d) <- s, null (vars d)]
像这样的数据类型data Subst a = S [(String,a)]
我已经声明subst
了 assubst :: Subst a -> a -> a
和vars
as vars :: a -> [String]
。当我运行它时,我得到一个类型错误。任何想法为什么?