[英]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.