Jay, thanks for reminding me of the rank operator. I had forgotten about that one. :-)
Yes, in this case it would definitely do the right thing, but as you mention it won't allow you to work on other axes. Regards, Elias On 31 March 2014 15:29, Jay Foad <jay.f...@gmail.com> wrote: > On 31 March 2014 04:51, Elias Mårtenson <loke...@gmail.com> wrote: > > I keep wanting to be able to apply an axis argument to the ¨ (EACH) > > operator. I.e, to sort an array rows, I wanted to do: > > > > {⍵[⍋⍵]}¨[2] foo > > > > > > Instead, I had to do: > > > > ⊃ {⍵[⍋⍵]}¨ ⊂[2] foo > > > > > > Would it make sense to be able to specify an axis number to the the EACH > > operator as an extension? > > Hi Elias, > > Have you considered using the Rank operator? > > {⍵[⍋⍵]}⍤1(4 3⍴'FEEFIEFOEFUM') > EEF > EFI > EFO > FMU > > There is a bit of tension in APL between these two different ways of > solving the same kinds of problem: primitives-with-axis, and the Rank > operator. > > - Primitives-with-axis are a bit ad hoc. Every primitive interprets > the axis specification in a different way, and some primitives (like > Each) don't support it at all. > > - By contrast, the Rank operator is completely uniform and applies to > all functions. > > - But the Rank operator restricts you to dividing the argument up > along the leading axes. (Some would argue that this restriction is a > good thing.) E.g. you can use it to sort each row of a matrix, but not > to sort each column. > > Jay. >