Given that layout has been used in Miranda, Haskell, etc., to determine
when one thing ends and another begins, it might be worth trying the
same idea within expressions. The suggestion is that any subexpression
that contains no white space but is surrounded by white space has
implied parentheses around it. Hence
f x!i would parse as f (x!i)
This would make functions definitions with pattern matching easier too.
For example, we could write:
sum x:xs = x + sum xs
instead of
sum (x:xs) = x + sum xs
I'm not completely convinced myself, but thought it was an idea worth
floating.
Warren