
That's an interesting idea! A few remarks: 1. For consistency it's probably a good idea to either backtick non-operators such as: infix `mappend` x y z or parenthesize operators such as: infix (+) x y z I tend to prefer the latter because my eyes are very accustomed to reading `infix + x y z` as `(infix) + (x y z)`. 2. I think it might be useful to have a multiline version: infix (+) in x y w z * d which the lexer desugars to: infix (+) in { x ; y w ; z * d } and is semantically equivalent to: infix (+) x (y w) (z * d) This provides the additional benefit of not having to parenthesize non-atomic arguments, which can be a source of typos.