*sigh I fixed it literally the second you sent this email! And you are right, what fixed it was I put ~current:(ref 0) and it is parsing arguments now. On Mon, Nov 24, 2014 at 1:16 PM, Gabriel Scherer wrote: > Looking at the parse_argv documentation (man Arg), I see two possible > reasons: > - Arg expects the passed string array to start with the name of the > program at index 0; does your custom_arguments array follow this > convention? > - parse_argv takes an (optional) integer reference ~current that tells > it where to start parsing the argument array; by default, it points to > a global mutable reference Arg.current (so that several calls in a row > start on the next element); if your library has used Arg.parse itself > before, Arg.current may be set too far. You should try passing > ~current:(ref 0) to make sure you only use local state. > > On Mon, Nov 24, 2014 at 6:42 PM, Kenneth Adam Miller > wrote: > > So, I'm using a library that calls Arg.parse to build up it's inputs in > > another data structure. I don't want to rewrite any code, and I'm > consuming > > the library in a different way than how the binary consumes it, which is > > just to feed it input from the command line. > > > > Not wanting to replicate code in two locations, I chose to use > > Arg.parse_argv, and supplied it with an array that would normally be on > the > > command line. For some reason, supplying the exact same speclist as what > was > > used in the original statement that works as a command line tool doesn't > > result in the parameters being parsed. > > > > command line tool: > > Arg.parse speclist anon usage; > > get_program () (* consumes the mutable list that speclist modified *) > > > > (* speclist modifies a mutable list used to hold arguments *) > > > > my code that consumes speclist as a library: > > > > Arg.parse_argv custom_arguments speclist anon usage > > get_program () (* exact same function as above, exact same variables to > > Arg.parse* *) > > > > For some reason, Arg.parse_argv seems to complete, but when get_program > > proceeds, it sees the mutable argument list as being empty. Why? >