Keywords that introduce blocks bind more tightly than function application. So f let x
is the same as f (let x)
and f if b then p else q
is the same as f (if b then p else q)
.
Block keywords bind more tightly than delayed computations syntax. So 'let x''
is the same as _ -> let x
and !if b then p else q
is the same as (if b then p else q) ()
.
Blocks eagerly consume expressions, so if b then p else q + r
is the same as if b then p else (q + r)
.