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

List Haskell-列表操作:模式中的分析错误,list,haskell,concatenation,addition,List,Haskell,Concatenation,Addition,我正在用Haskell编写一个函数,它获取两个Int类型的列表,并将其中一个列表的值添加到另一个列表中 例如:加法器[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]

我正在用Haskell编写一个函数,它获取两个Int类型的列表,并将其中一个列表的值添加到另一个列表中

例如:加法器[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
我不断得到错误:

模式中的分析错误:加法器失败,加载的模块:无


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

您需要在模式周围加上括号。它应该是x:xs,而不是x:xs本身。这就是造成编译器混乱的原因

补遗::[Int]->[Int]->[Int] 加法器[][]=[] 加法器x:xs[]=x:xs 加法器[]y:ys=y:ys 加法器x:xs y:ys=[x+y]++加法器xs-ys
您的模式周围需要括号。它应该是x:xs,而不是x:xs本身。这就是造成编译器混乱的原因

补遗::[Int]->[Int]->[Int] 加法器[][]=[] 加法器x:xs[]=x:xs 加法器[]y:ys=y:ys 加法器x:xs y:ys=[x+y]++加法器xs-ys
不是对OP的回答,但我只想指出,模式可以简化为:

addElements :: [Int] -> [Int] -> [Int]
addElements xs [] = xs
addElements [] ys = 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

我认为在x:xs和y:ys模式匹配周围需要括号。可能的重复我认为在x:xs和y:ys模式匹配周围需要括号。可能的重复