bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Disclose fails with mixed ranks


From: Roland Besserer
Subject: Re: Disclose fails with mixed ranks
Date: Wed, 22 Sep 2021 16:20:52 -0700


Very interesting.

The APLX manual is quite explicit in that all element of the right argument must be of the same rank or a scalar. So the rank error makes sense.

Dialog, as usual, doesn't fail to surprise.

At ML 1 Disclose behaves like Pick and at levels 2 and 3 it extends rank, not just shape as APLX does.




Sent from my BlackBerry - the most secure mobile device
From: bug-apl@gnu.org
Sent: September 22, 2021 12:47
To: bug-apl@gnu.org
Reply-to: lchretien@me.com
Subject: Re: Disclose fails with mixed ranks

In Dyalog, did u change the Quad ML setting?

Because this is definitely not the result i am getting

On Sep 22, 2021, at 12:49, Elias Mårtenson <lokedhs@gmail.com> wrote:

Well, for each element that has lower rank than the highest-rank element in the list should be rank-extended by prepending 1.

In other words, in the example I gave, the maximum rank (last element) is 2. The rank-1 element (the second one) should be extended to (1 2) by prepending 1.

Thus, the result from Dyalog is:

┌┌→──┐
↓↓3 0│
││0 0│
││   │
││1 2│
││0 0│
││   │
││0 1│
││2 3│
└└~──┘

The current implementation already extends scalars, so it seems to special-case that case anyway.

Regards,
Elias

On Wed, 22 Sept 2021 at 23:55, Louis Chretien via Bugs and suggestions for GNU APL <bug-apl@gnu.org> wrote:
And what is the correct answer?

I tried it with APL/X 5.1, and i get the same “RANK ERROR” as in GNU APL.

If i understand disclose correctly, the right argument are nested elements, but of a shape that allows for them to be laminated into a matrix as a result. Having a scalar, a vector and a matrix is bound to create difficulty.

On Sep 22, 2021, at 09:16, Elias Mårtenson <lokedhs@gmail.com> wrote:

The following _expression_ should work, if I'm reading the ISO spec correctly:

⊃ 3 (1 2) (2 2 ⍴ 0 1 2 3)

It does work on Dyalog, and gives the expected result.

Regards,
Elias


---
Louis Chrétien






---
Louis Chrétien





reply via email to

[Prev in Thread] Current Thread [Next in Thread]