optimization of list comprehensions

Robert Virding <>
Thu Mar 9 22:39:32 CET 2006


You will probably find an even grater usage if you start searching more 
seriously. I, for one, usually do an import on 'lists' so I don't have 
to write the lists: prefix all the time.

Robert

Mats Cronqvist skrev:
> Richard A. O'Keefe wrote:
> 
>  > If you have evidence to back this up, it's publishable.
>  > Please publish it.  Some sort of survey analysing what kind of
>  > programmers use what kind of language features would be most 
> illuminating.
> 
> Ulf Wiger (AL/EAB) wrote:
> 
>> I think it's safe to say that even "average" industrial programmers 
>> rather quickly learn to exploit the virtues
>> of higher-order functions and iterators.
> 
>   not to be outdone by wiger (and since o'keefe said please), i ran a 
> few greps on 1,748,162 lines of erlang sources (comments included). i 
> estimate that some 3-400 people have contributed to the code sample.
>   i counted how many times each of the patterns below appeared per module.
> 
>         "[ (]fun[ (]"  "lists:fold" "lists:map" "lists:foreach"
> never          64%            89%          84%          85%
> <3 times       81%            97%          94%          94%
> 
>   36% of the modules defined at least one fun. however, 15% of all 
> modules had at least one call to mnesia:transaction. so i feel pretty 
> confident stating that  ~80% of all modules have no (non-mnesia related) 
> funs.
>   another observation is that although there were ~2 fun definition per 
> module, 4% of the modules accounts for 50% of the fun definitions.
>   one possible interpretation is that most of this code was produced by 
> programmers that rarely use funs if they don't have to. obviously, the 
> methodology is much too weak to *prove* this. i'm not sure it can be 
> proven, since there's no way to establish who wrote what. most modules 
> have been touched by at least a handful of people, and everyone has 
> worked on more than one module.
>   note also that most of this code sample has been used for years in a 
> very challenging environment, and is part of one of the most stable 
> products in its market.
>   i does seem safe to say that one can write well working Erlang code 
> while rarely, if ever, using funs (excluding mnesia use, as always).
> 
>   mats
> 



More information about the erlang-questions mailing list