To be clearer, I see more of a problem with > than with }. or {: here.

I understand the reasons for:

    >  2; < 2 4 $ i.8
2 0 0 0
0 0 0 0

0 1 2 3
4 5 6 7
   $ >  2; < 2 4 $ i.8
2 2 4
   $ {: >  2; < 2 4 $ i.8
2 4
   $ }. >  2; < 2 4 $ i.8
1 2 4

I guess that I should completely understand why $2 is not 0 or 1, but I can let 
my pretty little head just consider that a list of 1 and a scalar must be 
different:

   $ <2

   $ 2

   # $ 2
0
    $ 2 1
2
   $ ,<2 
1
   $ (i.0),<2
1


   $ >,<2
1

I guess that if I can understand the above, I should also understand:

   {. > (i.0),<2  
2
   {. >}. (i.0),<2
┌┐
││
└┘

A very good reason for that behaviour is that code that scans a list, should 
expect list items throughout.  But there is code such as { {. / that already 
work identically on scalars and 1 element lists.

A naive question is should > also have that capability.  To answer myself, I 
can see the reason not to.  List items can be avoided whenever list items are 
possible, so the programmer should avoid them when not necessary.  Still there 
can be gotchas.

   ;/ (i.0),<2
┌─┐
│2│
└─┘
   ; (i.0),<2
2
   $  ; (i.0),<2
1


----- Original Message -----
From: Ric Sherlock <[email protected]>
To: Programming JForum <[email protected]>
Cc: 
Sent: Wednesday, October 2, 2013 7:08:28 AM
Subject: Re: [Jprogramming] strange difference between }. and {:

I think of the distinction as follows:
}. drops the first item from a list. The result is the rest of the list,
however many items that may be.

{: takes the last item from a list. The result is a single item, not a list.

Seems logical to me.


On Wed, Oct 2, 2013 at 5:17 PM, Pascal Jasmin <[email protected]>wrote:

> I am taking the shape after I have opened the item.  I'd expect it (the
> insides) to be the same whether I got the item from }. or {:
>
>
>
> ----- Original Message -----
> From: Roger Hui <[email protected]>
> To: Programming forum <[email protected]>
> Cc:
> Sent: Wednesday, October 2, 2013 12:00:27 AM
> Subject: Re: [Jprogramming] strange difference between }. and {:
>
> Not so strange.  }. and {: are not equivalent, even on 2-element lists.
>
>
> On Tue, Oct 1, 2013 at 8:56 PM, Pascal Jasmin <[email protected]
> >wrote:
>
> >    $ >@}.  2; < 2 4 $ i.8
> > 1 2 4
> >    $ >@{:  2; < 2 4 $ i.8
> > 2 4
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to