Haskell - 列表操作:模式分析错误
Haskell - list operation: Parse error in pattern
我正在 Haskell
中编写一个函数,该函数获取两个 Int
类型的列表并将一个列表的值添加到另一个列表中。
例如:addElements [1,2,3] [4,5,6]
将给出输出:[5,7,9]
我目前的功能:
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
我不断收到错误消息:
Parse error in pattern: addElements Failed, modules loaded: none
我没有得到任何其他信息 - 我做错了什么?
您的模式需要用括号括起来。它本身应该是 (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
不是对 OP 的回答,但我只是想指出模式可以简化为:
addElements :: [Int] -> [Int] -> [Int]
addElements xs [] = xs
addElements [] ys = ys
addElements (x:xs) (y:ys) = (x+y) : addElements xs ys
我正在 Haskell
中编写一个函数,该函数获取两个 Int
类型的列表并将一个列表的值添加到另一个列表中。
例如:addElements [1,2,3] [4,5,6]
将给出输出:[5,7,9]
我目前的功能:
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
我不断收到错误消息:
Parse error in pattern: addElements Failed, modules loaded: none
我没有得到任何其他信息 - 我做错了什么?
您的模式需要用括号括起来。它本身应该是 (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
不是对 OP 的回答,但我只是想指出模式可以简化为:
addElements :: [Int] -> [Int] -> [Int]
addElements xs [] = xs
addElements [] ys = ys
addElements (x:xs) (y:ys) = (x+y) : addElements xs ys