- ambiguity in the parser, e.g. the toplevel let bindings are separated
by "let", the local lets by pair "let" and "in"
I thought about this one... that's the interesting point of forcing a single name on the left of the '=' sign
f = fun x y -> x + y
you can deduce this meant LET f = fun x y -> x + y and therefore know where the previous instruction ends because the two constructions are isomorphic.
Say
let g = fun x -> x + 1 in let f = fun x -> let v = g 0 in x + v
becomes
g = fun x -> x + 1 f = fun x -> v = g 0 in x + v
with a unique semantic
g = fun x -> x + 1
f = fun x ->
v = g 0
in x + v
You only need "in" for the return value of the function, all other elements being separated by an implicit ";"
Notice that "fun" is also useless, the arrow alone shows it is a function g = x -> x + 1 but that feels a bit extreme.
- ignoring "rec" - no good too - please see the other thread, it
contradicts how the aliasing of values is now used e.g. for extending
modules via. include
Easy to fix as well.
Diego Olivier