【发布时间】:2020-07-14 16:50:15
【问题描述】:
谁能解释我如何修复我的程序。
对 Haskell 来说非常新,一直在尝试创建一个 length 函数来计算任何类型列表的长度。
我的目标是使用data 来做到这一点,因为我想创建一个全新的类型来做到这一点(这是我目前正在学习的 Haskell 领域,这就是为什么它可能不是最有效的实现这个函数)
data List a = Nil | Cons a (List a)
len :: List a -> Int
len Nil = 0
len (Cons _ xs) = 1 + len xs
如果我在 len [1,2,3] 上运行它
我得到了错误:
• Couldn't match expected type ‘List a0’
with actual type ‘[Integer]’
• In the first argument of ‘len’, namely ‘[1, 2, 3]’
In the expression: len [1, 2, 3]
In an equation for ‘it’: it = len [1, 2, 3]
【问题讨论】:
-
[1,2,3]不是List。
标签: list haskell recursion type-mismatch algebraic-data-types