在PureScript,比如Haskell,功能應用程序使用的空白,以及聯營左邊,這意味着f x y z
解析爲((f x) y) z
。條款需要重新組合時,您只需要括號。看起來你正在試圖爲函數應用使用圓括號。
我懷疑你想寫什麼是
foldl (\acc i -> smallerFile acc i) (Just x) xs
的參數foldl
是一個函數,它有兩個參數acc
和i
並返回應用smallerFile acc i
。這相當於雙重申請(smallerFile acc) i
。首先我們應用參數acc
,然後應用第二個參數i
。解析器中函數應用的優先規則使這些等價。
此外,被括號Just x
需求,因爲你寫的解析爲
foldl (\acc i -> smallerFile (acc i)) Just x xs
它提供了太多的參數foldl
。您可以注意到\acc i -> smallerFile acc i
相當於\acc -> (\i -> (smallerFile acc) i)
。內部函數立即應用其參數i
,所以我們可以將其簡化爲\acc -> smallerFile acc
。應用這種簡化第二次,我們得到的只是smallerFile
,所以代碼變成:
foldl smallerFile (Just x) xs
所以最後唯一的錯誤是的Just x
不正確的包圍。