On Friday 06 June 2003 13:22, Rob Dixon wrote: > Katy Brownfield wrote: > > On Fri, 6 Jun 2003 18:16:26 +0100, Rob Dixon > > <[EMAIL PROTECTED]> > > > > wrote: > > > John W. Krahn wrote: > > > > Mark Anderson wrote: > > > > > B) You should NEVER use map in a void context. map works > > > > > very hard to build up it's return value, so there should be > > > > > an assignment (=) operator to the left of your map call > > > > > almost always, otherwise all of that work is wasted. > > > > > > > > I would never say NEVER as there are some situations where it > > > > may be appropriate, just like there are some situations where > > > > goto is appropriate. > > > > > > Sure, but I can't for the moment think of any difference between > > > > > > foreach (LIST) BLOCK > > > or > > > EXPRESSION foreach LIST > > > > > > and > > > > > > map BLOCK LIST > > > or > > > map EXPRESSION, LIST > > > > > > in void context. Any thoughts? > > > > Mark explained the difference. map has the overhead of building the > > list that it returns. foreach doesn't. In Kevin's example a list > > containing "01" .. "12" is created and never used. It's > > inefficient. > > Thanks Katy, but John was saying that there were "some situations > where it may be be appropriate [to use map in a void context]". I > could think of none, since those constructs that I posted using > 'foreach' seemed to do exactly the same thing without the overhead > that you describe. I wondered if John (or anybody) knew of a > difference that I didn't.
Well, to quote Larry Wall[0] (you all know who he is don't you): "The argument against using an operator for other than its primary purpose strikes me the same as the old argument that you shouldn't have sex for other than procreational purposes. Sometimes side effects are more enjoyable than the originally intended effect." John [0] http://www.perl.com/pub/a/1999/11/p5pdigest/THISWEEK-19991107.html -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]