谁喜欢告诉我这段代码有什么问题(语法上)?
-- 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
口译员:
模式中的解析错误:mergeX
谁喜欢告诉我这段代码有什么问题(语法上)?
-- 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
口译员:
模式中的解析错误:mergeX
你需要一些括号:
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)
原因是因为:
优先级低于函数应用,所以mergeX a:as b:bs res
会被解析为:
(mergeX a):(as b):(bs res)
这是一个错误。
您需要将构造函数模式(或无论如何调用它们)放在括号中。
mergeX (a:as) (b:bs) res