Syntactic precedence

The reserved symbols'and!bind more tightly than function application, So'f xis the same as(_ -> f) xand!x + yis the same as(x ()) + y.

These symbols bind less tightly than keywords that introduce blocks, so'let xis the same as_ -> let xand!if b then p else qis the same as(if b then p else q) ().

Additional'and!combine in the obvious way:

  • ''syntacticPrecedence.xis the same as(_ -> (_ -> x))or(_ _ -> x).
  • !!xis the same asx () ().
  • !'xand'!xare both the same asx.

You can of course use parentheses to precisely control how'and!get applied.