我已经写了一个Haskell功能,像这样:类型错误在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
为subst :: Subst a -> a -> a
和vars
为vars :: a -> [String]
。当我运行这个时,我得到一个类型错误。任何想法为什么?
当你问这样的问题**给我们错误信息**。错误消息试图帮助程序员理解错误。即使他们对你没有任何意义,他们也会帮助你帮助你。然后,一旦你得到了你的答案,看看错误信息,并试图找出它是如何对应于你的问题的解释。这将逐渐使您能够使用类型错误消息来为自己找出问题! – Ben