optimization of list comprehensions

Mats Cronqvist <>
Thu Mar 2 12:30:37 CET 2006


   what about this then?

   [foo ! x(X,Y,Z) || X <- [a,b,c], Y<-[d,e,f], Z<-[g,h,i]].

   but my real problem with running side-effect-only code in list comprehensions 
is that it's counter-intuitive. i use a list constructor (because of the nice 
syntax) even though i don't actually want a list.
   it is also a bit worrying that you have to be a vm guru to be able to figure 
out if it's space-safe or not.

   mats

Robert Virding wrote:
> I have been thinking about this a bit and I wonder if the constructing 
> of the return list really causes any problems. Space-wise it will only 
> be as large as the size of the input list, so I wouldn't worry.
> 
> Robert
> 
> Ulf Wiger (AL/EAB) skrev:
> 
>> I've seen many examples of how people use
>> list comprehensions as a form of beautified
>> lists:foreach() - that is, they don't care
>> about the return value of the comprehension.
>>
>> I hesitate to say that it's bad practice,
>> even though one will build a potentially
>> large list unnecessarily, since it's actually looks a lot nicer than 
>> using lists:foreach().
>>
>> Question: would it be in some way hideous
>> to introduce an optimization where such
>> list comprehensions do everything except
>> actually build the list? Then they could
>> execute in constant space.
>>
>> /Ulf W
>>



More information about the erlang-questions mailing list