plt=: (-. */~)@(2&}.)@i. Note 'plt' plt n finds all primes less than n. For example: plt 10 2 3 5 7 plt 13 2 3 5 7 11
Uses inefficient algorithm for illustration only. Equivalent to i.&.(p:^:_1) . ) ----- Original Message ----- From: Roger Hui <[EMAIL PROTECTED]> Date: Friday, April 4, 2008 19:52 Subject: Re: RE: [Jgeneral] How readable is J? To: General forum <[email protected]> > > Just for fun, I wrote a function header as I would have if > > this were a verb in my library: > > > > NB. Monad. Calculate the list of primes less than y+2 > > It's very unusual to write a verb to calculate > the primes less than y+2 . More likely would be, > less than y, or less than or equal to y . > > > > ----- Original Message ----- > From: Henry Rich <[EMAIL PROTECTED]> > Date: Friday, April 4, 2008 18:44 > Subject: RE: [Jgeneral] How readable is J? > To: 'General forum' <[email protected]> > > > I don't disagree with what you say. > > > > Dan seemed to be saying, Can we read J without the > > interpreter, rather than, Can we write readable code? > > > > In my own code I have about 4 lines of comments per line of code > > on the average. IMO the readability comes from good design > > and good commenting. > > > > But in the spirit of Dan's post, you have asked a good question: > > why the |. ? There is one performance reason and one > functional> reason. > > > > And, -.~ here does not do list-.table, but is repeated > > list-.list . > > > > Just for fun, I wrote a function header as I would have if > > this were a verb in my library: > > > > NB. Monad. Calculate the list of primes less than y+2 > > NB. y is a scalar > > NB. Result is the list of primes < y+2, in ascending order > > NB. We create the list 1..y+1; then we reverse the list to get > > NB. y+1..1, and create the multiplication table of that with the > > NB. list 2..y+2. The last item of the table is the list > > NB. of candidate primes, and the other items of the table > > NB. are multiples of those numbers. We then remove each > > NB. set of multiples from the list of candidates. This > is a > > NB. sieve but we are sieving with all multiples, not just > > NB. multiples of primes. > > NB. > > NB. The table goes from big numbers to small numbers so that > > NB. the list of candidates is thinned out as quickly as > > NB. possible. > > > > Henry Rich > > > > > -----Original Message----- > > > From: [EMAIL PROTECTED] > > > [mailto:[EMAIL PROTECTED] On Behalf Of John Randall > > > Sent: Friday, April 04, 2008 9:19 PM > > > To: General forum > > > Subject: RE: [Jgeneral] How readable is J? > > > > > > Henry Rich wrote: > > > > -.~/@(|. */ >:)@:>:@:i. > > > > > > > > > > This is obviously a shorter solution to the problem, but I > > > would argue it > > > is less readable than Dan's original posting, even though it > > > is readable > > > in the broader sense. > > > > > > I tend to favor @: over unbroken trains, and I think that > > > helps in your > > > posting. There are a couple of points that will throw > a > > reader.> > > > 1. We are calculating all products of a list with > > itself. The |. is > > > obviously lining them up in some order, but why? > > > > > > 2. While using -. is good, I bet most readers do not know > the > > > ranks (0 _ > > > _) and then (list)-.(table) could be anyone's guess. > > > > > > I think Dan's original question was not completely > > formed. If you are > > > talking about readability, you need to know the > > audience. I > > > believe the > > > important audience is intermediate J users, who can write explicit > > > functions and do some simple tacit programming, and who want > > to get > > > further. > > > > > > Best wishes, > > > > > > John ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
