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

Reply via email to