Haskell - 列表操作:解析模式中的错误

时间:2017-02-27 13:21:17

标签: list haskell concatenation addition

我在total = Number($("#TaskHours_"+rownumber+"__SaturdayHours").html()) 中编写了一个函数,它获取了两个类型为Haskell的列表,并将一个列表的值添加到另一个列表中。

例如:Int将提供输出:addElements [1,2,3] [4,5,6]

到目前为止我的功能:

[5,7,9]

我一直收到错误:

  

模式中的解析错误:addElements失败,模块已加载:无

我没有得到任何其他信息 - 我做错了什么?

2 个答案:

答案 0 :(得分:7)

你的模式需要括号。它应该是(x:xs),而不是x:xs。这是导致编译器混淆的原因。

addElements :: [Int] -> [Int] -> [Int]
addElements [] [] = []
addElements (x:xs) [] = x:xs
addElements [] (y:ys) = y:ys
addElements (x:xs) (y:ys) = [x+y] ++ addElements xs ys

答案 1 :(得分:1)

不是OP的答案,但我只想指出模式可以简化为:

addElements :: [Int] -> [Int] -> [Int]
addElements xs [] = xs
addElements [] ys = ys
addElements (x:xs) (y:ys) = (x+y) : addElements xs ys