How about implementing a non-conflicting extension? I'm suggesting the following form as an alternative:
Z ← f ⍤[j] B Z ← A f ⍤[j] B Regards, Elias On 7 February 2016 at 20:27, Juergen Sauermann < juergen.sauerm...@t-online.de> wrote: > Hi Alex, > > not sure what *a ¯3⍤< m* is supposed to mean. > > According to the ISO standard the syntax for *⍤* is: > > *Z ← f ⍤ j B *(monadic, page 124) or > *Z ← A f ⍤ j B *(dyadic, page 125) > > If you compare that with your example: > > a ¯3 ⍤ < m > > then the (expected value) *j* is the primitive function *<*, which > triggers the *VALUE ERROR*. > The fact that the caret points to *a* is not because *a* is the culprit, > but because *a* is the left > end of the phrase being reduced. > > Unfortunately the syntax in the ISO standard is somewhat ambiguous:* j *is > a one, two, or three > element vector, and B is the rest. Therefore it is sometimes impossible to > decide where *j* ends > and where *B* begins, and the examples for *⍤* in the ISO standard are in > conflict with the IBM APL2 > binding rules. This conflict occurs only with *⍤* which - wise decision > - is not implemented at all > in IBM APL2. > > The conflict can be avoided by always putting *j* and *B *into separate > variables. If you use literals for *j* > or *B*, heaven forbid, then be prepared for fairly nasty error messages > at times. > > /// Jürgen > > > > On 02/06/2016 05:17 PM, alexwei...@alexweiner.com wrote: > > > Hi bug-apl, > > Why am I getting a value error here? It seems that the variable 'a' > definitely exists: > > a←2 2 ⍴2 > m←4 4 ⍴⍳16 > a > 2 2 > 2 2 > m > 1 2 3 4 > 5 6 7 8 > 9 10 11 12 > 13 14 15 16 > > > > VALUE ERROR > a ¯3⍤<m > ^ > a > 2 2 > 2 2 > > > > > SVN 693 > -Alex > > >