Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

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)

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

    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.