(small bug with workaround, but not patch, follows)
Hi, For a User-defined command defined with a lambda, I expect
the omega
is "the command entered by the user is passed to APL_fun as an
APL string
(starting with the command name)." Consider the case where the
interactive
user-defined command typed is: )ret 21 1
Welcome to GNU APL version 1.9 / SVN: 1825
<snip>
' ' ⍷ ')ret 21 1' ⍝ Where are the spaces?
0 0 0 0 1 0 0 1 0
showspace ← { ' '⍷⍵} ⍝ Direct function (lambda)
showspace ')ret 21 1' ⍝ Where are the spaces?
0 0 0 0 1 0 0 1 0
]usercmd )ret { ' '⍷⍵ }
User-defined command )ret installed.
)ret 21 1 ⍝ Huh?
1 1 1 1 1 1 1 1 1
]usercmd )nik showspace
User-defined command )nik installed.
)nik 21 1 ⍝ But this is OK?!
0 0 0 0 1 0 0 1 0
]usercmd )low { (⎕ucs32)⍷⍵}
User-defined command )low installed.
)low 21 1
0 0 0 0 1 0 0 1 0
I surmise the parser is inadvertently stripping spaces in
literals in ]ucmd
lambdas but not direct function lambda. This comment in
cmd_USERCMD()
indicates awareness, but the lambda definition has already been
sliced
into args[].
// lambdas could contain spaces, collect all arguments
in one string
...and reassembly into "one string" has the unwelcome effect of
dropping
whitespace.
Cheers,