optimization of list comprehensions
Erik Reitsma (RY/ETM)
Thu Mar 2 11:31:31 CET 2006
If the return value would be large, you would not want it in the list.
But then you could still do:
1> [ begin io:format("~w~n",[X]), empty end || X <- [1,2,3,4,5] ].
This way the return value of the function with side effect is not added
to the list. I think it is a bit ugly, though.
> 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.
> 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
> > 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