bug-apl
[Top][All Lists]
Advanced

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

Re: [Bug-apl] How does a vector become a matrix?


From: Elias Mårtenson
Subject: Re: [Bug-apl] How does a vector become a matrix?
Date: Mon, 12 May 2014 22:50:47 +0800

The only way to make it more consistent is to make behaviours that today are allowed into an error.

What would you expect ⊃'333' '55555' to do?

Regards,
Elias


On 12 May 2014 22:43, Blake McBride <address@hidden> wrote:
Thanks.  I have to say, with no reflection on present company, I am about as frustrated and disgusted with nested arrays, as defined by IBM, as I could be.   Having enclose do one thing for all arrays and another for scalars has caused me endless hours of frustration.  (Isn't a scalar just a zero dimension array?)  How much time has one to spend making enclose do what comes naturally to ones mind?  Now I find that disclose actually modifies data beyond the ability to reconstruct it.  In your example, if one string were a different length than the other, APL will lengthen it to match the longest upon disclose.  The original length of each string is lost forever.  Why stop there?  Why not change a 4 to a 7?

Having enclose and disclose uniformly add and remove layers of boxing only is simple, consistent, predictable, useful, and easy to understand.  If I add 3 and then subtract 3 I end up with the same number.  But if I enclose and then disclose, I end up with something different - sometimes.  Imagine that!

      '333' '55555'
┌→────────────┐
│┌→──┐ ┌→────┐│
││333│ │55555││
│└───┘ └─────┘│
└∊────────────┘
      ⊃'333' '55555'
┌→────┐
↓333  │
│55555│
└─────┘
      (⊃'333' '55555')[1;]
┌→────┐
│333  │
└─────┘
      ⍴(⊃'333' '55555')[1;]
┌→┐
│5│
└─┘


There are ways to rationalize almost anything.  IMO, the IBM nested array approach is confusing, unpredictable, and renders it a tool of very careful last resort.

I know there has been debate about this in the past, and I am not looking to resurrect it.  It is a real shame IBM chose the path it chose.

Blake



On Mon, May 12, 2014 at 5:08 AM, Jay Foad <address@hidden> wrote:
APL2's Disclose (Dyalog calls it Mix) will convert a vector of vectors
into a matrix:

      ⊃'timor' 'mortis'
┌→─────┐
↓timor │
│mortis│
└──────┘

Your second application of Disclose is applied to a 1-vector of
1-vectors (,⊂,7), so it returns a 1x1 matrix.

Jay.

On 12 May 2014 06:03, Blake McBride <address@hidden> wrote:
>       ⊃⊃⊂,⊂,7
> ┌→┐
> ↓7│
> └─┘
>       ⍴⊃⊃⊂,⊂,7
> ┌→──┐
> │1 1│
> └───┘
>



reply via email to

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