Version française
Home     About     Download     Resources     Contact us    
Browse thread
Use Arg module to read keyword followed by unspecified number of arguments
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Till Varoquaux <till.varoquaux@g...>
Subject: Re: [Caml-list] Use Arg module to read keyword followed by unspecified number of arguments
Actualy I'd stick with double references... (yuck). From the top of my head:
let a=ref [];;
let b=ref [];;
let c=ref a;;

let p_list l=
        List.iter (Printf.printf "\"%s\"") l;
        print_newline ()

let _=
        Arg.parse [("-switch",Arg.Unit (fun () -> c:=b),"")]
                (fun s -> !c:=s::!(!c))
                "blah";
        p_list !a;
        p_list !b

Note how c is a double reference...

Till

On 5/23/06, Michael Wohlwend <micha-1@fantasymail.de> wrote:
> On Tuesday 23 May 2006 19:17, mulhern wrote:
> > Hi!
> >
> > I expect to be reading something like this:
> >
> > -pred-files <arg1> <arg2> ... <argn> -key2 <arg> -extra-files <arg1>
> > <arg2> ... <argn> -key4
>
> I think the idea by Till to separate the args with commas is best, but if you
> don't want to do this, maybe something like that would be o.k. :
>
> let mode_pred = ref true;;
> let pred_files = ref [];;
> let extra_files = ref [];;
> let key2 = ref "";;
>
> Arg.parse [
>         "-extra-files", Arg.Clear mode_pred, "extra files";
>         "-key2", Arg.Set_string key2, "key2";
>         "-pred-files", Arg.Set mode_pred, "pred files"
>         ]
>         (fun name -> if !mode_pred then
>                         pred_files := name :: !pred_files
>                 else
>                         extra_files := name :: !extra_files
>         ) "usage..."
> ;;
>
>
> cheers,
>  Michael
>
>
> --
> C offers you enough rope to hang yourself.
> C++ offers a fully equipped firing squad, a last cigarette and
> a blindfold.
>
> _______________________________________________
> 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
>