【发布时间】:2012-11-10 00:34:39
【问题描述】:
我写了一个类似这样的 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]。当我运行它时,我得到一个类型错误。任何想法为什么?
【问题讨论】:
-
当您提出此类问题时给我们错误信息。错误消息试图帮助程序员了解问题所在。即使他们对你没有任何意义,他们也会帮助你。然后,一旦您得到答案,请查看错误消息并尝试找出它与您的问题的解释相对应。这将逐渐使您能够使用类型错误消息来自己识别问题!
标签: haskell substitution unification