Wojciech,
 
- ambiguity with structure equivalence operator 
- replacement of == would not be good as it is reserved for physical equality
 
Pointer equality is not coreML (not in SML, nor F#). Easy to fix anyway.

- 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