Blake,

APL is actually quite consistent. What you are complaining about is the
fact that the *parser* interprets 'x' as a character, as opposed to a
one-character string. I agree this can be confusing.

It's all a syntax thing, once your text has been read into the interpreter,
characters vs. strings are completely consistent. To work around this
inconsistency there is really only a single rule to keep in mind:

    *When specifying a one-character string in source, type ,'x' instead of
'x'*

That's really all there is to it. Again, once your text has been processed,
APL itself is consistent.

Personally, I'd have preferred to have 'x' result in a string and some
other syntax, say #\x like in Lisp, or something like that.

Regards,
Elias


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

> '333' '55555' is shorthand for (⊂'333'), ⊂'55555' and would give you what
> it does now (presuming neither is a scalar!!)
>
> ⊃'333' '55555' would be meaningless because you'd end up with two
> independent values.  APL deals with one at a time.
>
> You could do:  ⊃('333' '55555')[1] to give '333'
>
> Perhaps something like (a b)←⊃'333' '55555' might make sense.
>
> APL is not valuable because every imaginable sequence produces some
> non-error.  I had a simple problem which would have been trivial to solve
> if nested arrays worked in a straight forward way.  I believe you were the
> person that pointed out that:
>
> '22' '22'
> '333 '333'
> '4444' '4444'
> '55555' '55555'
> '22' 5 5⍴⍳25
>
> are all treated in a consistent fashion, but:
>
> '1' '1'
>
> is treated differently.  That means, in order to get consistent behavior,
> one has to have special case code all over the place.  Look at all the
> gyrations David was going through trying to make it work consistently.
>
> Perhaps there is some logic behind how it works.  It is just impossible to
> work with in straight forward cases, and wherever their logic applies is
> beyond my ability to comprehend.
>
> Thanks.
>
> Blake
>
>
>
>
> On Mon, May 12, 2014 at 9:50 AM, Elias Mårtenson <loke...@gmail.com>wrote:
>
>> The only way to make it more consistent is to make behaviours that today
>> are allowed into an error.
>>
>> What would you expect ⊃'333' '55555' to do?
>>
>> Regards,
>> Elias
>>
>>
>> On 12 May 2014 22:43, Blake McBride <blake1...@gmail.com> 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