By the way, I found a workaround to the string ordering. The workaround requires memory on the order of ↑(⍴V)×⌈/⍴¨V for a vector V. This should be enough justification for the proposed extension.
Here's what I do: instead of doing the following: *z[⍋z←'foo' 'bar' 'test' 'aaaaaa']* ┌→──────────────────────────┐ │┌→──┐ ┌→──┐ ┌→───┐ ┌→─────┐│ ││bar│ │foo│ │test│ │aaaaaa││ │└───┘ └───┘ └────┘ └──────┘│ └∊──────────────────────────┘ I do this: *z[⍋⊃z←'foo' 'bar' 'test' 'aaaaaa']* ┌→──────────────────────────┐ │┌→─────┐ ┌→──┐ ┌→──┐ ┌→───┐│ ││aaaaaa│ │bar│ │foo│ │test││ │└──────┘ └───┘ └───┘ └────┘│ └∊──────────────────────────┘ Regards, Elias On 8 July 2014 14:49, Elias Mårtenson <loke...@gmail.com> wrote: > Right. My opinion is that grade with an array of lists should do lexical > ordering. Given the fact that grade on depth-2 arrays are not specified by > the standard anyway, it should be safe. > > Regards, > Elias > > > On 8 July 2014 12:51, David B. Lamkins <dlamk...@gmail.com> wrote: > >> I think it'd be really handy if that expression did what we'd like it to >> do. I guess it'd fall under the category of "conforming extension". >> >> Neither IBM nor ISO APL define a behavior for dyadic grade with other >> than a character matrix as the right argument. >> >> On Tue, 2014-07-08 at 12:40 +0800, Elias Mårtenson wrote: >> > To clarify, I tried the following: >> > >> > >> > (⎕UCS¨⍳1114111) ⍋ 'foo' 'bar' 'test' >> > DOMAIN ERROR >> > (⎕UCS¨⍳1114111)⍋'foo' 'bar' 'test' >> > ^ ^ >> > >> > >> > Note of course that this is pretty insane, and there should be an >> > easier way to do this. >> > >> > >> > Regards, >> > Elias >> > >> > >> > On 8 July 2014 12:38, Elias Mårtenson <loke...@gmail.com> wrote: >> > Right, but just having a "plain" collating order for Unicode >> > would require me to pass a million-element array >> > (⎕UCS¨⍳1114111) as left argument to grade. >> > >> > >> > That said, I can't even get dyadic grade to work at all, but >> > that's a separate issue. >> > >> > >> > Regards, >> > Elias >> > >> > >> > On 8 July 2014 12:27, David B. Lamkins <dlamk...@gmail.com> >> > wrote: >> > The problem with generating a permutation vector for >> > an "arbitrary" >> > Unicode string is still a problems of collating order. >> > There is no >> > inherent order in Unicode; someone has to decide on >> > what makes sense as >> > a collating order for the subset of code points used >> > by the application. >> > >> > You should use ⎕ucs with a vector of code points to >> > define your own >> > collating order for Unicode; any code points not >> > explicitly specified in >> > the collating order will sort to the end. >> > >> > For example (and this is an easy case) you can use >> > this to specify a >> > default collating order (based upon ordinal value of >> > the code points >> > themselves) for the 8-bit ASCII subset: >> > >> > ⎕ucs ⎕io-⍨⍳256 >> > >> > >> > >> > On Tue, 2014-07-08 at 12:09 +0800, Elias Mårtenson >> > wrote: >> > > Dyadic grade doesn't make much sense in the context >> > of Unicode though. >> > > How do you grade an arbitrary Unicode string? >> > > >> > > >> > > That issue is there even if we completely disregard >> > all the >> > > other Unicode-related collating issues. >> > > >> > > >> > > Regards, >> > > Elias >> > > >> > > >> > > On 8 July 2014 12:00, David B. Lamkins >> > <dlamk...@gmail.com> wrote: >> > > Check my follow-up post. >> > > >> > > I'm fairly certain that the issue is whether >> > monadic grade >> > > applied to a >> > > list of strings should do anything but >> > signal a domain error. >> > > The ISO >> > > spec says that monadic grade is defined only >> > on numeric >> > > arguments. >> > > >> > > My test case appears to have monadic grade >> > treating strings as >> > > if they >> > > encode numbers in a sufficiently large base. >> > > >> > > If you want to sort strings, use dyadic >> > grade. The left >> > > argument >> > > specifies a collating sequence. >> > > >> > > On Tue, 2014-07-08 at 11:43 +0800, Elias >> > Mårtenson wrote: >> > > > Ordering by size first makes very little >> > sense to me. It >> > > makes it very >> > > > hard to sort any list of strings. >> > > > >> > > > >> > > > I was hoping that the following would have >> > done so, but it >> > > also >> > > > suffers from the "length first" issue: >> > > > >> > > > >> > > > z[⍋ ⎕UCS¨ z←'aa' 'xx' 'aaa' 'xxx'] >> > > > aa xx aaa xxx >> > > > >> > > > >> > > > What is the proper way to sort strings >> > given the existing >> > > semantics of >> > > > grade? >> > > > >> > > > >> > > > Regards, >> > > > Elias >> > > > >> > > > >> > > > On 8 July 2014 02:34, David Lamkins >> > <da...@lamkins.net> >> > > wrote: >> > > > Looking at the spec, it seems that >> > monadic grade is >> > > defined >> > > > only for numeric data. >> > > > >> > > > >> > > > That leaves open the question of >> > whether my example >> > > should >> > > > have signaled a domain error. >> > > > >> > > > >> > > > >> > > > On Mon, Jul 7, 2014 at 11:25 AM, >> > David Lamkins >> > > > <da...@lamkins.net> wrote: >> > > > Given a list of character >> > vectors (and >> > > scalars), grade >> > > > appears to generate the >> > permutation vector >> > > first by >> > > > length then by content. >> > > > >> > > > ⍋'aaa' 'xx' 'y' >> > 'bbb' 'cc' >> > > > 3 5 2 1 4 >> > > > >> > > > >> > > > This seems >> > counterintuitive. It seems as if >> > > ⍋ treats >> > > > character strings like >> > numbers. Is this a >> > > bug? >> > > > >> > > > -- >> > > > "The secret to creativity >> > is knowing how to >> > > hide your >> > > > sources." >> > > > Albert Einstein >> > > > >> > > > >> > > > >> > http://soundcloud.com/davidlamkins >> > > > >> > http://reverbnation.com/lamkins >> > > > >> > http://reverbnation.com/lcw >> > > > http://lamkins-guitar.com/ >> > > > http://lamkins.net/ >> > > > >> > http://successful-lisp.com/ >> > > > >> > > > >> > > > >> > > > -- >> > > > "The secret to creativity is >> > knowing how to hide >> > > your >> > > > sources." >> > > > Albert Einstein >> > > > >> > > > >> > > > http://soundcloud.com/davidlamkins >> > > > http://reverbnation.com/lamkins >> > > > http://reverbnation.com/lcw >> > > > http://lamkins-guitar.com/ >> > > > http://lamkins.net/ >> > > > http://successful-lisp.com/ >> > > > >> > > > >> > > >> > > >> > > >> > > >> > > >> > >> > >> > >> > >> > >> > >> > >> >> >> >