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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]>
>> > 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
>> > <[email protected]> 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
>> > <[email protected]>
>> > > 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
>> > > > <[email protected]> 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/
>> > > >
>> > > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>>
>>
>>
>