Well, the enclose function's role is not to "add a layer of boxing". Its
role is to "ensure the argument is a scalar". If the argument is already a
scalar, it doesn't have to do anything.

I'm not even sure it's possible to have a scalar enclosing another scalar.
For all intents and purposes a double-layers scalar would behave
indistinguishably from a plain scalar anyway.

Regards,
Elias

On 12 May 2014 23:19, Blake McBride <blake1...@gmail.com> wrote:

> 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 <
> juergen.sauerm...@t-online.de> 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 <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> wrote:
>>> >       ⊃⊃⊂,⊂,7
>>> > ┌→┐
>>> > ↓7│
>>> > └─┘
>>> >       ⍴⊃⊃⊂,⊂,7
>>> > ┌→──┐
>>> > │1 1│
>>> > └───┘
>>> >
>>>
>>
>>
>>
>

Reply via email to