这应该很简单,但我似乎无法绕过它。
假设我有自己的 List 类,在其接口中声明head
和。应该是您所期望的,即同质项目的集合。然后,我想创建一个实现接口的类型。tail
List
data
List
以下代码是我想出的,但它不起作用:你将如何解决它?
class List l where
head :: l -> a -- ERROR! How do I tell: given a list, return an element?
tail :: l -> l
data ConsList a = Nil | Cons a (ConsList a)
instance List (ConsList Int) where
head Nil = error "Empty List"
head (Cons h _) = h
tail Nil = error "Empty List"
tail (Cons _ t) = t
提前致谢!