Thanks, I get it now !
Here, the value of !s is empty when the (f !s) is evaluated…
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 !!! *)
you shoud pass the whole reference as argument :
Arg.String(f s)
and
let f a b = print_endline !a; print_endline b
why ? because the !s here is evaluated only later, whenthe anonymous function is applied.
> (* Arg.String (fun ss -> f !s ss) (\* Works just fine ... why ? *\) *)
--
Sam