Now for the graph for which all this code was written: a graph that
shows how many function definitions contain fewer than 10 words and
symbols, how many contain between 10 and 19 words and symbols, how
many contain between 20 and 29 words and symbols, and so on.

This is a multi-step process. First make sure you have loaded all the
requisite code.

It is a good idea to reset the value of top-of-ranges in case
you have set it to some different value. You can evaluate the
following:

On my machine, this takes about an hour. It looks though 303 Lisp
files in my copy of Emacs version 19.23. After all that computing,
the list-for-graph has this value:

This means that my copy of Emacs has 537 function definitions with
fewer than 10 words or symbols in them, 1,027 function definitions
with 10 to 19 words or symbols in them, 955 function definitions with
20 to 29 words or symbols in them, and so on.

Clearly, just by looking at this list we can see that most function
definitions contain ten to thirty words and symbols.

Now for printing. We do not want to print a graph that is
1,030 lines high ... Instead, we should print a graph that is
fewer than twenty-five lines high. A graph that height can be
displayed on almost any monitor, and easily printed on a sheet of paper.

This means that each value in list-for-graph must be reduced to
one-fiftieth its present value.

Here is a short function to do just that, using two functions we have
not yet seen, mapcar and lambda.

(defun one-fiftieth (full-range)
"Return list, each number one-fiftieth of previous."
(mapcar '(lambda (arg) (/ arg 50)) full-range))