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 <dlamk...@gmail.com>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.
>
>
>

Reply via email to