On Mar13, 2012, at 11:49 , Gabriel Cardoso wrote: > Dear list, > > I have empty arguments when using Arg.Tuple with references. This minimalist > example illustrates my problem : > > let f a b = > print_endline a; > print_endline b > > let s = ref "" > > let speclist = [( > "-a", > Arg.Tuple [ > Arg.Set_string s; > Arg.String (f !s) (* !s is empty !!! *)
Here, the value of !s is empty when the (f !s) is evaluated… you shoud pass the whole reference as argument : Arg.String(f s) and let f a b = print_endline !a; print_endline b > (* Arg.String (fun ss -> f !s ss) (\* Works just fine ... why ? *\) *) why ? because the !s is evaluated only later, when the anonymous function (fun ss ->…) is applied. -- Sam -- Caml-list mailing list. Subscription management and archives: https://sympa-roc.inria.fr/wws/info/caml-list Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs