.z.x
But in reality you'd probably use:
.Q.opt
(which is 6 characters!)
Update: reference to .Q.opt
EDIT: Ok, .Q.opt looks a little better, although it's still not close to getopt (where -abc would be shorthand for three flags, -a -b -c; but other flags might be defined to take (possibly optional) arguments). Is it a built-in implemented in whatever K/Q is written in? How would you implement .Q.opt in K if it were not built in?
http://man.openbsd.org/getopt.3
http://cvsweb.openbsd.org/src/lib/libc/stdlib/getopt_long.c?...
It's implemented in K and comes standard with the distrubution. If you've got a KDB+/Q distribution you can view the actual function definition by executing it without an argument:
q).Q.opt
k){[o]x::$[#i:&o like"-[^0-9]*";i[0]#o;o];((`$1_*:)'o)!1_'o:i_o}
Disclaimer: I cannot read K, and I'd consider myself a beginner in Q, so the above is completely alien to me. But what that does, in words: any "-single-dash-params" is treated as an option. It splits your 'argv' by those options. Everything between the options become the 'values' for the prior most recently preceding option. If you've got a no-arg option, it just becomes a member in the dictionary without a corresponding value: $ q -opt1 foo bar -opt2 baz -opt3
q).Q.opt .z.x
opt1| ("foo";"bar")
opt2| ,"baz"
opt3| ()
EDIT: formatting.Do you know if GNU APL offers the facilities to do stuff like that?