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 <jay.f...@gmail.com
<mailto:jay.f...@gmail.com>> 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 <blake1...@gmail.com
<mailto:blake1...@gmail.com>> wrote:
> ⊃⊃⊂,⊂,7
> ┌→┐
> ↓7│
> └─┘
> ⍴⊃⊃⊂,⊂,7
> ┌→──┐
> │1 1│
> └───┘
>