[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior
From: |
David B. Lamkins |
Subject: |
Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior |
Date: |
Wed, 28 May 2014 15:57:42 -0700 |
Yes, it is interesting.
I now understand that ⍎BS/'expr' is an APL 1 idiom that became obsolete
with APL 2.
The APL 2 IDIOMS Library[*] offers this instead:
fn¨BS/⊂A ⍝ Conditional execution of monadic function.
As-is, this is not as general as APL 1's ⍎BS/'expr', but it's still
useful.
With a helper function, one can get the behavior of the APL 1 idiom as
interpreted by APL 2:
⎕cr 'ex'
z←ex v
z←⍎v
ex¨0/⊂'⍳5'
ex¨1/⊂'⍳5'
1 2 3 4 5
Finally, to get the original effect of APL 1's 0⍴⍎BS/'expr' :
⎕cr 'qx'
qx v
v
qx¨0/⊂'⍳5'
qx¨1/⊂'⍳5'
⍳5
I guess I have some APL 1 habits to unlearn... :\
Thanks, Blake, for bringing this up.
[*] APL 2 IDIOMS Library, Stan Cason, IBM, Endicott NY
ftp://ftp.software.ibm.com/ps/products/apl2/info/APL2IDIOMS.pdf
On Wed, 2014-05-28 at 13:34 -0500, Blake McBride wrote:
> Dear David,
>
>
> Interesting observation. More interesting is how GNU APL correctly
> handles it. i.e.:
>
>
> ∇test[⎕]∇
> ∇
> [0] test
> [1] '1'
> [2] ⍎0/'test2'
> [3] '2'
> [4] ''
> [5] '3'
> [6] ⍎1/'test2'
> [7] '4'
> ∇
> ∇test2[⎕]∇
> ∇
> [0] test2
> [1] 'test2'
> ∇
> test
> 1
> 2
>
>
> 3
> test2
> 4
>
>
> The problem you bring up, which would be very significant, isn't a
> problem. I'm uncertain of the logic used, but GNU APL (correctly)
> produces the expected and standard behavior - a behavior that doesn't
> have the problem you mention.
>
>
> Am I missing something?
>
>
> Thanks.
>
>
> Blake
>
>
>
>
> On Wed, May 28, 2014 at 1:19 PM, David B. Lamkins <address@hidden>
> wrote:
> Now that I can see how printing '' as CR affects a larger
> program, I've
> gotta say that I'm stumped as to how this behavior can be
> considered
> usable.
>
> Specifically, it's now (unless there's a trick I haven't yet
> discovered)
> difficult (see below) to silently (i.e. without affecting the
> display)
> execute an arbitrary expression that may, depending upon the
> expression,
> return either '' or nothing at all.
>
> I dunno... maybe that's not something that anyone else has
> ever done.
>
> But here's an extremely common idiom that breaks badly under
> the new
> print behavior:
>
> ⍎test/'expression'
>
> This is just a conditional execution of an expression. The
> problem with
> the new print behavior is that this line will print a CR
> whenever the
> test is false. Not OK...
>
> If we're going to stick with this new behavior, I can adapt.
> I've even
> discovered a (rather tortured-looking) solution to the
> use-case I posed
> in the second paragraph:
>
> ∇sink v
> ⍝ Consume value; no display
> ∇
>
> sink '0' ⎕ea ',⍎l'
>
> On the other hand, it's surprising to me how this new behavior
> affects
> so much else.
>
>
>
>
- [Bug-apl] Revisiting the APL 2 empty-array display behavior, David B. Lamkins, 2014/05/28
- Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior, Blake McBride, 2014/05/28
- Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior,
David B. Lamkins <=
- Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior, Blake McBride, 2014/05/28
- Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior, David B. Lamkins, 2014/05/28
- Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior, Juergen Sauermann, 2014/05/29
- Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior, Elias Mårtenson, 2014/05/29
- Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior, Juergen Sauermann, 2014/05/31
- Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior, Jay Foad, 2014/05/29
- Re: [Bug-apl] Revisiting the APL 2 empty-array display behavior, Juergen Sauermann, 2014/05/31