在Haskell中使用用户定义的数据类型调用函数

时间:2018-11-11 06:37:55

标签: haskell

我在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])

如何调用此函数?

1 个答案:

答案 0 :(得分:0)

根据我上面的评论:

  

尝试使用listLength (Cons 2 (Cons 2 Nil))。问题是[2,3]的类型为[Integer],但是Cons构造函数需要第二个类型为List Integer的参数,并且由于Haskell的强类型,这两种类型不相同!