This is standard J.

Here's how it works:

   'see?' (] +/ % #) 2 3 5 7

The verb here is a hook. The above is equivalent to:

X=: 'see?'
U=: ]
V=: +/%#
Y=: 2 3 5 7

   X (U V) Y

And this gets evaluated as:

   X U (V Y)

Here, V Y evaluates as 4.25

So we can simplify to
   X U 4.25

Substituting back in our original values we have
   'see?' ] 4.25

Since the verb here is the right identity, the result of this sentence is
the right argument, or 4.25.

   'see?' ] 4.25
4.25

Thanks,

-- 
Raul


On Tue, May 20, 2014 at 1:01 AM, 'Pascal Jasmin' via Programming <
[email protected]> wrote:

> is that special code? because its not supposed to work ie:
>
> 'see?' # 1 2 3 4
> |domain error
>
> The above (] +/ % #) is even a special parsing rule?
>
> At any rate, the conventions I use help the one who will read my code the
> most, but I'd still recommend to anyone to avoid long hooks.
>
>
>
>
> ----- Original Message -----
> From: Raul Miller <[email protected]>
> To: Programming forum <[email protected]>
> Cc:
> Sent: Monday, May 19, 2014 11:38:24 PM
> Subject: Re: [Jprogramming] Understandable J
>
> That's an interesting line of thought.
>
> Note that we can take a fork and ensure that we always use its monadic
> definition by prefixing it with the verb ]
>
> Here's a mean example:
> mean=: ] +/ % #
>
>    mean 2 3 5 7
> 4.25
>    'see?' mean 2 3 5 7
> 4.25
>
> Now obviously there isn't a lot of need for this kind of thing - we've gone
> for years (decades?) without anyone complaining about its absence. But it's
> still kind of neat.
>
> Thanks,
>
> --
> Raul
>
>
>
>
> On Mon, May 19, 2014 at 11:19 PM, 'Pascal Jasmin' via Programming <
> [email protected]> wrote:
>
> > Here are some ways to improve readability for me:
> >
> > lets take,
> >
> > quicksort=: (($:@(<#[),(=#[),$:@(>#[))({~ ?@#))^:(1<#)
> >
> > the first step is spacing out the train:
> >
> > quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
> >
> > the next step is avoiding the hook that takes a while to find due to all
> > the parens:
> >
> > quicksort=: (] ($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
> >
> > I find the above superhelpful because the left ] tells me right away that
> > it is a fork.
> > and then automatically all of the references to [ in the pivot verb are
> > actually ones to y argument, and I know that the whole verb is monadic.
> >
> > optional, but I think still helpful, is to add whitespace to long parens,
> > and it doesn't hurt to get rid of right hook:
> >
> > quicksort=: (] ( $:@(<#[) , (=#[) , $:@(>#[) ) (] {~ ?@#)) ^: (1<#)
> >
> >
> >
> >
> >
> > ----- Original Message -----
> > From: Don Kelly <[email protected]>
> > To: [email protected]
> > Cc:
> > Sent: Monday, May 19, 2014 9:55:33 PM
> > Subject: Re: [Jprogramming] Understandable J
> >
> > Agreed  but both need attention- often the most refined program may be
> > the hardest to read.
> >
> > Don
> > On 17/05/2014 9:31 PM, 'Bo Jacoby' via Programming wrote:
> > > Improve the program rather than the documentation.
> > >
> > > Den 4:49 søndag den 18. maj 2014 skrev Don Kelly <[email protected]>:
> > >
> > >
> > >>
> > >> I find that putting code with lots of explanatory NB.'s  and maybe a
> > >> how-to  paragraph as a noun in a script is essential. This also works
> > >> for little code snippets than may prove useful in the future (and
> > >> sometimes with variations listed).  Examples also help.
> > >> This is not only an aid to me, but to others who may use the code.
> This
> > >> came from past APL experience where I would look at something I wrote
> > >> and wondered what I did. Starting from scratch is nice but if the hard
> > >> work has been done, why do it again
> > >> except to improve on  the approach?
> > >> There are 2 ways:
> > >> 1)intersperse comments within multiline verbs  to help interpretation
> of
> > >> the line
> > >> 2)provide a noun such as "howN'
> > >> and example of this is the following definition from an Essay on
> Newton
> > >> Raphson
> > >> where the following is given
> > >>
> > >>    N=: 1 : '- u % u d. 1' (which could be given a better name)
> > >>
> > >> this could be followed by a series of NB.'s in the script indicating
> > the usage
> > >> NB. (_2+*:)N ^:c]xo solves x^2 =2 using c iterations starting form a
> > guess xo
> > >> or with more Nb. for more detail.
> > >>
> > >> Don Kelly
> > >>
> > >>
> > >>
> > >>
> > >>
> > >> On 15/05/2014 11:36 PM, robert therriault wrote:
> > >>> Thanks Raul,
> > >>>
> > >>> I am happy with some of the progress that I am making in my projects
> > (and occasionally programming as well), but I like the poetry of J and in
> > that way part of the challenge is placing the context through the
> examples.
> > Without that context a poem is just pretty words on a page and a tacit
> > expression without examples may not even reveal its valence.
> > >>>
> > >>> I think that there are opportunities in combining good test driven
> > development with the rapid prototyping abilities of J -- but first I am
> > playing with J Labs as a medium of expression, education, art etc.
> > >>>
> > >>> Cheers, bob
> > >>>
> > >>> ps. I appreciate the support for my work. The fact that I am a
> > terrible programmer does not keep me from making terrible programs that
> > explore neat ideas. Life's too short to let a lack of talent hold you
> back
> > :-)
> > >>>
> > >>> On May 15, 2014, at 11:10 PM, Raul Miller <[email protected]>
> > wrote:
> > >>>
> > >>>> I would not knock "starting from scratch" as a bad thing. Arthur
> > Whitney
> > >>>> has been known to do that, for example.
> > >>>>
> > >>>> I think it matters more what you are accomplishing and your ability
> > to make
> > >>>> that useful for other people.
> > >>>>
> > >>>> Thanks,
> > >>>>
> > >>>> --
> > >>>> Raul
> > >>>>
> > >>>>
> > >>>> On Fri, May 16, 2014 at 2:07 AM, robert therriault <
> > [email protected]>wrote:
> > >>>>
> > >>>>> I am a terrible programmer, but I have found that including
> comments
> > that
> > >>>>> have examples of what the entity should do, are usually enough for
> > me to
> > >>>>> figure out what is going on.
> > >>>>>
> > >>>>> Without that ... I usually start from scratch, as that is faster
> and
> > less
> > >>>>> frustrating.
> > >>>>>
> > >>>>> I really am terrible at programming.
> > >>>>>
> > >>>>> Cheers, bob
> > >>>>>
> > >>>>>
> > >>>>> On May 15, 2014, at 10:52 PM, 'Bo Jacoby' via Programming <
> > >>>>> [email protected]> wrote:
> > >>>>>
> > >>>>>> "how does one write understandable J?" One does not write
> > understandable
> > >>>>> J! One writes as compactly as possible, and if it needs to be
> > understood
> > >>>>> it's parts are investigated piece by piece. Understandability is
> not
> > a
> > >>>>> property of text, but rather a property of relationship between
> text
> > and
> > >>>>> reader. / Bo.
> > >>>>>> Den 3:51 fredag den 16. maj 2014 skrev Don Guinn <
> > [email protected]>:
> > >>>>>>
> > >>>>>> What is easy and obvious depends so much on one's background.
> > Several
> > >>>>> years
> > >>>>>>> ago we tried to teach a woman, at the time in her 80's, how to
> use
> > a
> > >>>>>>> Windows computer. Total failure. The real problem was that she
> > could
> > >>>>> see no
> > >>>>>>> use in or reason to use a computer. She had no interest in
> > learning it.
> > >>>>>>>
> > >>>>>>> Anyone who thinks that today's computer technology is intuitive,
> > obvious
> > >>>>>>> and easy should go to an old folk's home and try to teach them to
> > use a
> > >>>>>>> smart phone. But for a four-year-old. Piece of cake.
> > >>>>>>>
> > >>>>>>>
> > >>>>>>> On Thu, May 15, 2014 at 6:10 PM, Raul Miller <
> > [email protected]>
> > >>>>> wrote:
> > >>>>>>>> I am convinced that most code is not understandable to most
> > people,
> > >>>>>>>> regardless of the language it is written in. When I look at how
> > the
> > >>>>>>>> computer industry has progressed, I see this more and more.
> People
> > >>>>> write
> > >>>>>>>> huge amounts of code, don't document it very well, then other
> > people
> > >>>>> use
> > >>>>>>>> arbitrary bits of it and things sort of just freeze at that
> point.
> > >>>>>>>>
> > >>>>>>>> Personally, also, when I read code in any language, I do not
> feel
> > I
> > >>>>> really
> > >>>>>>>> understand it until I see what it does to representative data.
> > >>>>>>>>
> > >>>>>>>> So clear descriptions, simple data, and good labels are where I
> > would
> > >>>>> focus
> > >>>>>>>> most of my efforts in making code readable. And I would also
> > expect
> > >>>>> that
> > >>>>>>>> most of my code is going to be unread by most people (and I'll
> get
> > >>>>> dinged
> > >>>>>>>> for utterly random stuff by people who do read it).
> > >>>>>>>>
> > >>>>>>>> I think the point of readability is: you are going to need to be
> > able
> > >>>>> to
> > >>>>>>>> fix it, yourself, when it breaks, so you need to make it
> readable
> > for
> > >>>>>>>> yourself. And for that purpose, coming back and trying to read
> it
> > a
> > >>>>> month
> > >>>>>>>> or so after you've written it can be a good exercise.
> > >>>>>>>>
> > >>>>>>>> Also, I've found that documenting code is a great way of making
> > code
> > >>>>>>>> simpler. It's quite often the case that it's easier to change
> the
> > code
> > >>>>> to
> > >>>>>>>> be easy to document than it is to document some coding quirks
> that
> > >>>>>>>> originally seemed to be a good idea. So if you want readable
> code,
> > >>>>> another
> > >>>>>>>> good thing to do is have a technical writer (or at least someone
> > >>>>> reasonably
> > >>>>>>>> literate) work with the programmer to document it for some
> > audience.
> > >>>>>>>>
> > >>>>>>>> Of course, the most important thing is making sure that it
> works.
> > >>>>>>>>
> > >>>>>>>> Thanks,
> > >>>>>>>>
> > >>>>>>>> --
> > >>>>>>>> Raul
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>> On Thu, May 15, 2014 at 5:23 PM, Kip Murray <
> > [email protected]>
> > >>>>>>>> wrote:
> > >>>>>>>>
> > >>>>>>>>> How does one write understandable J?  I offer my newt adverb
> > below
> > >>>>> which
> > >>>>>>>>> uses spaces to promote understandability.
> > >>>>>>>>>
> > >>>>>>>>> Another technique might be Linda's "bottom up" style of first
> > showing
> > >>>>>>>>> pieces then putting the pieces together.  What are your
> > techniques?
> > >>>>>>>>     Please
> > >>>>>>>>> illustrate.
> > >>>>>>>>>
> > >>>>>>>>> We would like at least to understand our own code when we come
> > back to
> > >>>>>>>> it!
> > >>>>>>>>>       NB. Newton's method
> > >>>>>>>>>
> > >>>>>>>>>       newt =: 1 : 0
> > >>>>>>>>> t =. y
> > >>>>>>>>> h =. 1 % 512
> > >>>>>>>>> whilst. t ~: s do.
> > >>>>>>>>>       s =. t
> > >>>>>>>>>       t =. s - +: h * (u s) % (u s + h) - u s - h
> > >>>>>>>>>       h =. h % 2
> > >>>>>>>>> end.
> > >>>>>>>>> t
> > >>>>>>>>> )
> > >>>>>>>>>       (2 - *:) newt 2   NB. Find root of 2 - *: near 2
> > >>>>>>>>> 1.41421
> > >>>>>>>>>       (2 - *:) newt _2  NB. Find a root near _2
> > >>>>>>>>> _1.41421
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>> --
> > >>>>>>>>> Sent from Gmail Mobile
> > >>>>>>>>>
> > ----------------------------------------------------------------------
> > >>>>>>>>> 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
> > >>>
> ----------------------------------------------------------------------
> > >>> 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
> ----------------------------------------------------------------------
> 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