簡體   English   中英

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

我不斷收到錯誤:

解析模式中的錯誤:addElements失敗,模塊已加載:無

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

您需要在樣式兩邊加上括號。 它應該是(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM