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: Blake McBride
Subject: Re: [Bug-apl] How does a vector become a matrix?
Date: Mon, 12 May 2014 10:19:55 -0500

If that is true, I can sure live with and respect that.  What would the idiom be to have enclose do nothing but add a single layer of boxing to ANY data?  What would the idiom be to have disclose do nothing more than remove a single layer of a single boxed item?  (Both without making any modifications to the data, and never combining them.)

If I know the answer to those, I could do a lot with it.

Thanks.

Blake



On Mon, May 12, 2014 at 10:09 AM, Juergen Sauermann <address@hidden> wrote:
Hi Blake,

maybe what you are after is ⊃¨ instead of ⊃:

      ⊃'333' '55555'

333 
55555

      ⊃¨'333' '55555'
 333 55555

I guess they thought 'why do something that already exists by other means (ie. ⊃¨) and do something different (ie. ⊃)
that could be useful elsewhere'.

/// Jürgen



On 05/12/2014 04:43 PM, Blake McBride 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]