On Tue, 30 Apr 2002, Jim Cromie wrote: > so, assuming we have; > > print 'you gave me: @wordlist = '; # single quote - no interpolation > > for @words -> $it { > print; > FIRST { print '(' } # provisionally > NEXT { print ',' } > LAST {print ');' } > } > # and maybe > else { > print "();\n"; > } > > > this yields: > you gave me: @wordlist = (); > or if (@wordlist) { > # (damn - i want to say orif ;-) > you gave me: @wordlist = (alpha,beta,gamma,); > > whereas > > print 'you gave me: @wordlist = (', join(',', @words), ")\n"; > > doesnt include the last comma. > > if I remember the thread (now deleted, so cant be accurate) > > the last comma would be in there, unlike if it were in a join. > cuz NEXT is a block terminator, not a block-inbetweener > > this is vaguely unfortunate, as its not so simple to write > loops to generate SQL ( which isnt as friendly wrt to extra commas as > perl is )
I'd rather have an in-betweener block too. Loops like this are very common, and I hate doing "prefix" commas, if you know what I mean. I realize NEXT often used for cleanup, so maybe you could introduse Yet Another block, BETWEEN (or SQUEEZE). Or are we just going to have to deal with this fact? > > separately ( to re-iterate earlier good thoughts ): > > loop {} else {} > > would be more visually distinct (easier to read) as > > loop {} otherwize {} It would be especially clear if it were spelled correctly ;) > esp when loop block is bigger than a screenful, new keyword keeps us > from looking for the if, > and it fits better with natural language (or at least dictionary language ) > > where the connotation is a final alternative to lots of choices. Yes, I think that's a good idea also. I suppose C<else> DWIMs better though (I've taught people C++, and many times they wonder why they can't put elses on loops). I think it's really a matter of opinion. Which is, I suppose, why this list is here. Luke