I like it, and I am in favor of it. It would just be great to add it to the documentation as an enhancement over APL 2.
Thanks! Blake On Tue, Jun 3, 2014 at 5:15 AM, Juergen Sauermann < [email protected]> wrote: > Hi, > > yes, the reason is this: > > Sometimes you want to have (user-defined) wrapper functions around > primitives, for example > to get some statistics about their use (how often called, averge size of > arguments, etc). > It is pretty easy to convert a normal APL program to one using the > wrappers instead of > the primitives. > > That fails, however, when a primitive function or operator has an axis > argument. > > I also found it generally more plausible if user defined function can also > have an > axis argument. For example you can define the average of a vector like > this: > > ∇Z←Avg B > Z←(+/B) ÷ (⍴B) > ∇ > > But you can't normally define the average along an axis like this: > > ∇Z←Avg[X] B > Z←(+/[X]B) ÷ (⍴B)[X] > ∇ > > With GNU APL you can: > > Avg[1] 5 5⍴⍳25 > 11 12 13 14 15 > > Avg[2] 5 5⍴⍳25 > 3 8 13 18 23 > > /// Jürgen > > > > On 06/03/2014 04:39 AM, Elias Mårtenson wrote: > > As far as I understand, it's an extension that is unique to GNU APL. > > Regards, > Elias > > > On 3 June 2014 10:37, Blake McBride <[email protected]> wrote: > >> Greetings, >> >> APL-1 did not allow functions to be defined with [ and ] in the header. >> I've seen it done in GNU APL as follows: >> >> ∇fun[⎕]∇ >> ∇ >> [0] fun[x]y >> [1] x >> [2] y >> ∇ >> >> fun[4]55 >> 4 >> 55 >> >> I understand what is going on, but I was looking for it in the APL-2 >> manuals. I couldn't find it in any of the IBM manuals (and the spec is >> unreadable to me). So, my question is, where in the IBM APL-2 Language >> Manual is it shown? Any place else? >> >> Thanks. >> >> Blake >> >> > >
