Haskell:parsing模式中的错误
谁喜欢告诉我这个代码有什么问题(在语法上)?
-- 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将被parsing为: 
 (mergeX a):(as b):(bs res) 
这是一个错误。
你需要把构造函数模式(或者叫做)放在隐含的位置。
 mergeX (a:as) (b:bs) res