我试图将我的注意力集中在 Haskell 中的类和数据结构上,特别声明它的类型实例。我可以让它与某些类和数据类型一起工作,但不是全部,所以我一定错过了一些东西。具体来说,我有以下数据声明:
data LinkedList a = End | Link a (LinkedList a)
我想为该类型声明一个 Show 实例,以便输出看起来接近于“el1, el2, el3, el4, ...”
instance Show LinkedList where
show (End) = "."
show (Link a b) = show a ++ "," ++ show b
正如预期的那样,这不起作用...知道为什么吗?我想我理解“数据”和“类型”的含义,但我不确定我是否对类和实例感到满意。谢谢
最佳答案
instance Show LinkedList where
LinkedList
不是类型,LinkedList a
是类型。纠正这一点,我们得到
instance Show (LinkedList a) where
然后,我们收到另一个错误,因为我们对 a
类型的值调用了 show
。我们需要要求 a
也属于 Show
类。
instance Show a => Show (LinkedList a) where
现在应该可以了。
关于class - Haskell 声明 Show 类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52237378/