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/
>> >                 >         >
>> >                 >         >
>> >                 >
>> >                 >
>> >                 >
>> >                 >
>> >                 >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>>
>>
>>
>

Reply via email to