Thank you very much!! On Thu, Jan 27, 2022 at 5:53 AM Dr. Jürgen Sauermann < mail@jürgen-sauermann.de> wrote:
> Hi again, Gentlemen, > > I double-checked with IBM APL2 and the output of IBM APL2 was indeed > what Elias was expecting. > > My previous answer below was only half-way correct: Like I supposed, > the problem was in fact related to enclose and disclose in the inner > product. > However, the problem was not caused by the regular behaviour of enclose > and disclose but simply by a missing disclose in the APL macro that > implements the inner product when called with a defined function. > > Fixed in *SVN 1515*. > > Best Regards, > Jürgen > > > > > > On 1/26/22 10:37 PM, Blake McBride wrote: > > As a more general comment relating to these sorts of issues, I offer the > following opinion. > > I imagine that there are many variations that can legitimately be argued. > Where one lands on an issue is somewhat arbitrary. In some instances, X is > better and makes more sense. And in other instances, Y makes more sense. > Sometimes the answer is logically clear but more often not. > > For better or worse, given its somewhat "standard-setting" regard, I think > of IBM's APL-2 as "the standard". For me, it's not a matter of who is > right. That can be debated ad nauseam. I just consider IBM APL-2 APL-2. > All else are variations on a theme. > > It is my understanding that one of the main goals of GNU APL is to provide > an open-source implementation of IBM APL-2. If one were looking for a > platform to do explorations in the APL space, we already have NARS2000, > KAP, and other vendors to a lesser degree. I do not think GNU APL was > attempting the same thing. > > If I am correct, these sorts of debates are far simpler. We don't debate > the various merits. Rather, we simply compare the results with IBM APL-2. > Case closed. > > Also, if my view of GNU APL is correct, I like this fact a lot! For > better or worse, it works a specific way and won't change because > someone has a good example and argument. I am interested in stability and > reliability. > > Just an opinion. > > Blake McBride > > > On Wed, Jan 26, 2022 at 2:47 PM Dr. Jürgen Sauermann < > mail@jürgen-sauermann.de> wrote: > >> Hi Elias, >> >> I suppose the reason is roughly this: >> >> Some interpreter, including IBM APL2 and GNU APL, sometimes >> allow 1-element vertors (lets call them quasi-scalars) in places >> where strictly speaking scalars would be required. >> >> Your partial results 0/x if some a=0 is always a vector while 1/x >> for some other a-1 is always 1 1-element vector which is subject >> to be being treated as a scalar instead. >> >> When the the inner product f.g and the outer product ∘.g gets >> a non-scalar result from g then it will enclose that result before >> the f/ and disclose it again after the f/. >> >> The final disclose will in your case see a mix of 0-element and >> 1-element vectors and will scalar-entend the 1-element >> quasi-scalars to the common shape of all items which is, >> in your example empty). >> >> A different A reveals this: >> >> * (1⌈A≠0) +.Q B* >> * 6 6 * >> * 6 6 * >> * 6 6 * >> >> Best Regards, >> Jürgen >> >> >> >> On 1/26/22 5:25 AM, Elias Mårtenson wrote: >> >> Consider the following code: >> >> >> >> >> * A←3 4⍴1 3 2 0 2 1 0 1 4 0 0 2 B←4 2⍴4 1 0 3 0 2 2 0 Q←{⍺/⍵} >> (A≠0) +.Q B* >> >> My reading (and implementation) of the ISO spec suggests the output >> should be the following: >> >> ┏━━━┓ >> ┃4 6┃ >> ┃6 4┃ >> ┃6 1┃ >> ┗━━━┛ >> >> However, in GNU APL I get this: >> >> ┏→━━━━━━┓ >> ↓┏⊖┓ ┏⊖┓┃ >> ┃┃0┃ ┃0┃┃ >> ┃┗━┛ ┗━┛┃ >> ┃┏⊖┓ ┏⊖┓┃ >> ┃┃0┃ ┃0┃┃ >> ┃┗━┛ ┗━┛┃ >> ┃┏⊖┓ ┏⊖┓┃ >> ┃┃0┃ ┃0┃┃ >> ┃┗━┛ ┗━┛┃ >> ┗∊━━━━━━┛ >> >> Which one is correct? >> >> Regards, >> Elias >> >> >> >