Haskell: Parse error in pattern
谁喜欢告诉我这段代码有什么问题(语法上)?
1 2 3 4 5 6 | -- merge two sorted lists mergeX [] b res = b ++ res mergeX a [] res = a ++ res mergeX a:as b:bs res | a > b = mergeX as b:bs a:res | otherwise = mergeX a:as bs b:res |
口译员:
Parse error in pattern: mergeX
您需要一些括号:
1 2 3 4 5 | mergeX [] b res = b ++ res mergeX a [] res = a ++ res mergeX (a:as) (b:bs) res | a > b = mergeX as (b:bs) (a:res) | otherwise = mergeX (a:as) bs (b:res) |
原因是因为
1 | (mergeX a):(as b):(bs res) |
这是一个错误。
您需要将构造函数模式(或它们被称为)放在括号中。
1 | mergeX (a:as) (b:bs) res |