我在Haskell中定义了一种数据类型
data List a=Nil
|Cons a (List a)
我使用此数据类型编写了一个函数
listLength Nil=0
listLength (Cons x xs)=1+listLength(xs)
我试图通过给出这样的参数调用该函数
listLength (Cons 2 [2,3])
但是我得到一个错误:
<interactive>:68:20: error:
* Couldn't match expected type `List Integer'
with actual type `[Integer]'
* In the second argument of `Cons', namely `[2, 3]'
In the first argument of `listLength', namely `(Cons 2 [2, 3])'
In the expression: listLength (Cons 2 [2, 3])
如何调用此函数?
答案 0 :(得分:0)
根据我上面的评论:
尝试使用
listLength (Cons 2 (Cons 2 Nil))
。问题是[2,3]
的类型为[Integer]
,但是Cons
构造函数需要第二个类型为List Integer
的参数,并且由于Haskell的强类型,这两种类型不相同!