このコードの何が問題なのか (構文的に) 誰が教えてくれますか?
-- 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