|
From: | Elias Mårtenson |
Subject: | Re: [Bug-apl] How does a vector become a matrix? |
Date: | Mon, 12 May 2014 23:27:27 +0800 |
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.BlakeOn 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'I guess they thought 'why do something that already exists by other means (ie. ⊃¨) and do something different (ie. ⊃)
333
55555
⊃¨'333' '55555'
333 55555
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│
> └───┘
>
[Prev in Thread] | Current Thread | [Next in Thread] |