optimization of list comprehensions

Matthias Lang <>
Mon Mar 6 23:13:52 CET 2006


 > Serge Aleynikov <> wrote:

 > 	Why not have a similar concise representation for the following case?
 > 	
 > 	lists:foldl(fun(I, Acc) -> Acc+I end, 0,
 > 	  lists:filter(fun(N) -> N > 10 end,
 > 	    lists:seq(1, 20)).

Richard A. O'Keefe writes:

 > Well, we can improve that:
 > 
 > 	lists:foldl(fun(I, Acc) -> Acc+I end, 0,
 > 	  [I || I <- lists:seq(1, 20), I > 10])
 > 
 > and indeed we can improve it to
 > 
 > 	lists:sum([I || I <- lists:seq(1, 20), I > 10])
 > 
 > which is pretty hard to improve on, no?

Oh, I don't know. If short is all that matters, how about:

  lists:sum([I || I <- lists:seq(11, 20)]).
  155

and indeed we can improve it to:

  lists:sum(lists:seq(11, 20)).
  155

which is pretty hard to improve on without entering _indisputably_
useless territory:

  lists:sum("155").
  155

Matthias



More information about the erlang-questions mailing list