I would like to take this opportunity to plug ocaml+twt. Relieve your suffering... http://people.csail.mit.edu/mikelin/ocaml+twt/ On 10/25/06, Dmitri Boulytchev wrote: > > The revised syntax description you are referring to is quite > informal so I'd rather trust the compiler :) > You may restict the scope of a binding in a way its usual done in > other languages: by > > do {let y = 1 in a}; b; c; > > in revised or by > > (let y = 1 in a); b; c; > > in standard syntax. > > BR, > DB. > > > Perhaps I am misunderstanding the meaning of ";" in the revised > > syntax, however, the 6.2 chapter > > (http://caml.inria.fr/pub/docs/manual-camlp4/manual007.html) says that: > > > > do { e1; e2; e3; e4 } > > > > is an iterative sequence of expressions, whereas "let ... in" is > > reserved for local constructs. > > > > If so, wouldn't the scope of y in > > > > let y = 1 in do { a; b; c }; > > > > be different from: > > > > let y = 1 in a; b; c; > > > > Or else how to we indicate in the *revised syntax* the boundary of the > > "let ... in" scope? > > > > Serge > > > > Dmitri Boulytchev wrote: > > > >> That's ok - semicolon does not restict the scope since it plays > role > >> of a binary operation, not a statement delimiter. So in your example > >> > >> (); Printf.printf "y should be out of scope, but it's not: y = > >> %d\n" y > >> is a while scope for let-binding. > >> > >> Best regards, > >> Dmitri Boulytchev, > >> St.Petersburg State University. > >> > >> > >>> Hi, > >>> > >>> In the test program below in my understanding the 'y' variable > >>> should be > >>> out of scope in the printf statement, but apparently it's not. The > >>> compiler version is 3.09.3. > >>> > >>> $ cat tst.ml > >>> value f z = z + 1; > >>> > >>> let x = 1 in do { > >>> let y = f x in (); > >>> Printf.printf "y should be out of scope, but it's not: y = %d\n" y > >>> }; > >>> > >>> $ ocamlc -o tst -pp camlp4r tst.ml > >>> $ ./tst > >>> y should be out of scope, but it's not: y = 2 > >>> > >>> > >>> Any idea why? > >>> > >> > >> > > > > > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs >