Version française
Home     About     Download     Resources     Contact us    
Browse thread
Revised syntax scope (3.10 vs. 3.11)
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Andre Nathan <andre@s...>
Subject: Revised syntax scope (3.10 vs. 3.11)
Hello

I've found the following difference of behavior between OCaml 3.10 and
3.11. The code below

  <:expr<
    do {
      let a = "foo" in
      print_endline a;
      print_endline a
    }
  >>

when run through camlp4o becomes, in 3.10,

  let a = "foo" in (print_endline a; print_endline a)

while in 3.11 it becomes

  ((let a = "foo" in print_endline a); print_endline a)

which causes `a' to become out of scope in the second print_endline.
Is the behavior of 3.11 the correct one? I had to move the binding
of `a' out of the do block so that this works in both versions.

Thanks,
Andre