Thanks Raul, I got it! Also:
(<2){:: 5!:2 <'g'
4*& y
Linda
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Raul Miller
Sent: Sunday, March 09, 2014 7:52 PM
To: Programming forum
Subject: Re: [Jprogramming] Oddities in Bond including ,:
Oh, yes...
('';1;1;1) {:: A
Here, the left argument of {:: is an index operation. Do you see how it's
a series of four boxes? And, the leftmost box contains an empty list? That
box corresponds to the outermost box in A (which has no shape).
Since that outermost box of A has no shape, the index list for choosing
which box to open is empty.
The next box in the left argument of {:: has a 1, which means "open the
second box in the sequence (after opening the previous box)."
You might think of this a driving instructions, except instead of taking
intersections you are opening nested boxes (sort of like nested russian
dolls).
Does that help?
Thanks,
--
Raul
On Sun, Mar 9, 2014 at 5:11 PM, Linda Alvord <[email protected]>wrote:
> I thought maybe the shape of A (which I now know is empty) might provide
> a clue to how you came upon:
>
> g=: 13 :'4*& y'
>
> j=: 13 :'('''';1;1;1) {:: y'
>
> j 5!:1 <'g'
> 4*& y
>
> ]A=:5!:1 <'g'
> ┌─────────────────────┐
> │┌─┬─────────────────┐│
> ││:│┌─────┬─────────┐││
> ││ ││┌─┬─┐│┌─┬─────┐│││
> ││ │││0│3│││0│4*& y││││
> ││ ││└─┴─┘│└─┴─────┘│││
> ││ │└─────┴─────────┘││
> │└─┴─────────────────┘│
> └─────────────────────┘
>
> Linda
>
> --Original Message-----
> From: [email protected] [mailto:
> [email protected]] On Behalf Of Raul Miller
> Sent: Sunday, March 09, 2014 4:03 PM
> To: Programming forum
> Subject: Re: [Jprogramming] Oddities in Bond including ,:
>
> A has a shape! A has the same shape that 7 has.
>
> It's the empty shape.
>
> Understanding the empty shape is perhaps the most important lesson a J
> programmer can ever learn.
>
> $7
>
> */$8
> 1
> +/$9
> 0
>
> The empty shape is the reason we have a concept of identity values
> associated with our verbs.
>
> The empty shape is to arrays what zero is to numbers. It's the simplest
> absence of anything that you can have. Its a space waiting to be filled. In
> a sense, it represents J waiting for you to give it something worth doing.
>
> As for inventing the left argument to {:: you just count from left to right
> in each box.
>
> And, if you get an error, that means you guessed the rank wrong. You can
> either experiment (there are not many likely ranks) or you can compose an
> expression to inspect the rank (or shape) of the suspect box.
>
> And, just for fun, here's an empty list of empty array jokes:
>
> Thanks,
>
> --
> Raul
>
>
>
> On Sun, Mar 9, 2014 at 2:33 PM, Linda Alvord <[email protected]
> >wrote:
>
> > I’ve used 5!:4 , 3!:2 and 3!:6 but not 5!:1 so here are two
> > questions:
> >
> > g=: 13 :'4*& y'
> > g
> > 3 : '4*& y'
> >
> > ]A=: 5!:1 <'g'
> > ┌─────────────────────┐
> > │┌─┬─────────────────┐│
> > ││:│┌─────┬─────────┐││
> > ││ ││┌─┬─┐│┌─┬─────┐│││
> > ││ │││0│3│││0│4*& y││││
> > ││ ││└─┴─┘│└─┴─────┘│││
> > ││ │└─────┴─────────┘││
> > │└─┴─────────────────┘│
> > └─────────────────────┘
> > $A
> >
> >
> > Why doesn’t A have a shape?
> >
> > j=: 13 :'('''';1;1;1) {:: y'
> > j 5!:1 <'g'
> > 4*& y
> >
> > How did you know how to invent j so it would extract the definition?
> >
> > Linda
> >
> > -----Original Message-----
> > From: [email protected] [mailto:
> > [email protected]] On Behalf Of Raul Miller
> > Sent: Sunday, March 09, 2014 12:11 PM
> > To: Programming forum
> > Subject: Re: [Jprogramming] Oddities in Bond including ,:
> >
> > Here's your definition of g:
> >
> > g=: 13 :'4*& y'
> >
> > Here's the atomic representation:
> >
> > 5!:1<'g'
> > ┌─────────────────────┐
> > │┌─┬─────────────────┐│
> > ││:│┌─────┬─────────┐││
> > ││ ││┌─┬─┐│┌─┬─────┐│││
> > ││ │││0│3│││0│4*& y││││
> > ││ ││└─┴─┘│└─┴─────┘│││
> > ││ │└─────┴─────────┘││
> > │└─┴─────────────────┘│
> > └─────────────────────┘
> >
> > So let's try extracting the part that corresponds to the ,: part of your
> > tree display:
> > (0;1;1;1) {:: 5!:1<'g'
> > |length error
> >
> > Oops...
> >
> > ('';1;1;1) {:: 5!:1<'g'
> > 4*& y
> >
> > There we go. So what shape is it?
> >
> > $('';1;1;1) {:: 5!:1<'g'
> > 1 5
> >
> > Hmm... so how might we reproduce that shape at the command line?
> >
> > $,:'4*& y'
> > 1 5
> >
> > Bingo!
> >
> > In APL, there was a quadCR primitive which, given the name of a function
> > (verb) would come back with the character representation of the
> definition
> > of that verb. This character representation was an 2 dimensional array of
> > characters. (I also remember a quadVR primitive which came back with a
> > vector representation.)
> >
> > I imagine that that quadCR concept influenced the design, here.
> Underlying
> > it is the idea of using fixed width fonts to simplify the task of
> > organizing text vertically.
> >
> > And that's probably far enough on that tangent?
> >
> > Thanks,
> >
> > --
> > Raul
> >
> > On Sun, Mar 9, 2014 at 11:26 AM, Linda Alvord <[email protected]
> > >wrote:
> >
> > > Thanks Raul and Kip, Here is how I should have written the four verbs:
> > >
> > > NB. m&v y is defined as m v y
> > > NB. u&n y is defined as y u n
> > >
> > > f=: 13 :'4&* y'
> > > g=: 13 :'4*& y'
> > > h=: 13 :'&*4 y'
> > > i=: 13 :'*&4 y'
> > >
> > > f
> > > 4&*
> > > g
> > > 3 : '4*& y'
> > > h
> > > 3 : '&*4 y'
> > > i
> > > *&4
> > >
> > > 5!:4 <'f'
> > > -- 4
> > > -- & -+- *
> > > 5!:4 <'g'
> > > -- 3
> > > -- : -+- ,:'4*& y'
> > > 5!:4 <'h'
> > > -- 3
> > > -- : -+- ,:'&*4 y'
> > > 5!:4 <'i'
> > > -- *
> > > -- & -+- 4
> > >
> > > f 5
> > > 20
> > > g 5
> > > |syntax error: g
> > > | 4*&y
> > > h 5
> > > |syntax error: h
> > > | &*4 y
> > > i 5
> > > 20
> > >
> > > My remaining question is about the trees for g and h . How did
> the
> > > ,: show up in the trees? What does it mean? Is it a signal that
> there
> > is
> > > a syntax error?
> > >
> > > Linda
> > >
> > >
> > > -----Original Message-----
> > > From: [email protected]
> > > [mailto:[email protected]] On Behalf Of km
> > > Sent: Sunday, March 09, 2014 12:46 AM
> > > To: [email protected]
> > > Subject: Re: [Jprogramming] Oddities in Bond including ,:
> > >
> > > A suggestion: where do the understood parentheses go in 4&*y and in
> > 4*&y
> > > ? --Kip
> > >
> > > Sent from my iPad
> > >
> > > > On Mar 8, 2014, at 10:33 PM, "Linda Alvord" <[email protected]
> >
> > > wrote:
> > > >
> > > > Why is the display of f different than g , h and I ?
> > > >
> > > > NB. m&v y is defined as m v y
> > > >
> > > > NB. u&n y is defined as y u n
> > > >
> > > > f=: 13 :'4&*y'
> > > >
> > > > g=: 13 :'4*&y'
> > > >
> > > > h=: 13 :'y&*4'
> > > >
> > > > i=: 13 :'y*&4'
> > > >
> > > > f
> > > > 4&*
> > > >
> > > > g
> > > > 3 : '4*&y'
> > > >
> > > > h
> > > > 3 : 'y&*4'
> > > >
> > > > i
> > > > 3 : 'y*&4'
> > > >
> > > > 5!:4 <'f'
> > > > -- 4
> > > > -- & -+- *
> > > >
> > > > 5!:4 <'g'
> > > > -- 3
> > > > -- : -+- ,:'4*&y'
> > > >
> > > > 5!:4 <'h'
> > > > -- 3
> > > > -- : -+- ,:'y&*4'
> > > >
> > > > 5!:4 <'i'
> > > > -- 3
> > > > -- : -+- ,:'y*&4'
> > > >
> > > > Where does ,: come from in the trees for g , h and I ?
> > > >
> > > >
> > > > f 5
> > > > 20
> > > >
> > > > h 5
> > > > 20
> > > >
> > > > g 5
> > > > |syntax error: g
> > > > | 4*&y
> > > >
> > > > i 5
> > > > |syntax error: i
> > > > | y*&4
> > > >
> > > > Finally, only two work.
> > > >
> > > > Linda
> > >
> > ----------------------------------------------------------------------
> > 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm