- pExpression = getState >>= \{infixs}->foldr ($) pBasic
- [ pChainl (pure App)
- : [ if ifxr pChainr pChainl $ App o App (Var op) <$ pOp op
- \\(ifxr, op, _)<-infixs]]
-
- pBasic :: Parser Expression
- pBasic
- = Lambda <$ pToken TTLambda <*> pId <* pToken TTDot <*> pExpression
+ pExpression = getState >>= \{ifxs}->flip (foldr ($))
+ [pChainl (pure App):map fst $ sortBy (on (<) snd) ifxs]
+ $ Lambda <$ pToken TTLambda <*> pId <* pToken TTDot <*> pExpression