Christian Maeder wrote:
Hi,
I would like haskell to accept the following (currently illegal)
expressions as syntactically valid prefix applications:
f = id \ _ -> []
g = id let x = [] in x
h = id case [] of [] -> []
i = id do []
j = id if True then [] else []
The rational is that expressions starting with a keyword should extend
as far as possible (to the right and over several lines within their
layout).
On page 15/16 of the H98 report I think this could be achieved by:
exp10 ::= fexp
fexp ::= [fexp] keyexp
keyexp ::= \ apat ... -> exp | let ... | ... | aexp
(In fact, maybe for haskell' "$" could be changed to a keyword.)
Alternatively the # symbol could be removed from the pool of symbol
chars and used to construct syntactic sugar so you could use
f = id #$ \_ -> []
to mean exactly
f = id (\_ -> [])
I think when the idea of $ arose originally people didn't at that time
know about the many cases where the use of $ is not semantically
equivalent to explict brackets, since this knowledge probably only arose
later with the introduction of rank-n polymorphism. (Of course the need
for #$ would be fixed with impredicative types as in MLF.)
Best regards,
Brian.
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users