(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,

Reply via email to