Thanks, Jürgen. I'm comfortable with this resolution.
I noticed the same typos on p. 110 of the ISO spec. It didn't occur to me, though, to substitute Z←(R) ≠ (R). Best wishes, David On Fri, 2014-05-16 at 16:40 +0200, Juergen Sauermann wrote: > Hi David, > > not sure if it contradicts. > > (1) First of all the ISO standard says this about A f¨ B and f¨ B: > > 9.2.6 Each > ... > For both forms: > If B is not empty, Signal domain-error. > ... > > I believe this is a typo and they mean "if B is empty". Thus according > to the ISO standard +¨'' is undefined. > > (2) Then we have the IBM language reference. On page 56, "Fill > Function for Primitive Scalar Functions" > they describe the fill function for scalar f (i.e. + in your example) > which, as I read it, always returns > values with numeric 0 for all simple ravel elements. > > On page 110, Figure 20 they give a completely different definition of > the fill function for scalar function > as Z←(R) ≠ (L). As far as I can tell, both definitions are equivalent > for dyadic scalar functions, but the > definition on page 110 does not work for monadic scalar functions due > to the lack of L. If we fix that by > using Z←(R) ≠ (R) for monadic functions then both definitions become > equivalent again. > > GNU APL has hopefully implemented the description on page 56. > > (3) But then, surprise, in IBM APL2 +¨'' returns: > ┌⊖┐ > │ │ > └─┘ > while GNU APL returns: > +¨'' > ┌⊖┐ > │0│ > └─┘ > My best explanation for this that IBM may have used the same fill > function for + as for user-defined functions. > > I feel more comfortable with the written documentation of IBM APL2 > because it is rather difficult > to implement things based on what another implementation produces. > > /// Jürgen > > > On 05/15/2014 06:49 PM, David B. Lamkins wrote: > > > Thank you. Confirmed working with the original test cases. > > > > Pushing a bit further, I believe that the following behavior may still > > be contrary to the IBM spec in SVN 268: > > > > +¨'' > > ┌⊖┐ > > │0│ > > └─┘ > > > > Here we have a numeric function passed an empty character. Transforming > > this via the identity given previously, we get the equivalent > > expression: > > > > (⍴'')⍴⊂+↑'' > > DOMAIN ERROR > > (⍴'')⍴⊂+↑'' > > ^^ > > > > (I don't know whether there's a corresponding case for ⍬. Is there a > > primitive monadic function that only accepts character arguments?) > > > > > > > > > > >