The reserved symbols'
and!
bind more tightly than function application, So'f x
is the same as(_ -> f) x
and!x + y
is the same as(x ()) + y
.
These symbols bind less tightly than keywords that introduce blocks, sodo x
and'let x
are both the same as_ -> let x
and!if b then p else q
is the same as(if b then p else q) ()
.
Additional'
and!
combine in the following way:
''syntacticPrecedence.x
is the same as(_ -> (_ -> x))
or(_ _ -> x)
.!!x
is the same asx () ()
.!'x
and'!x
are both the same asx
.
You can use parentheses to precisely control how'
and!
get applied.