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│ >>> > └───┘ >>> > >>> >> >> >> >