eintr: Dec Example parts

 
 The parts of the function definition
 ....................................
 
 We start with three variables: the total number of rows in the triangle;
 the number of pebbles in a row; and the total number of pebbles, which
 is what we want to calculate.  These variables can be named
 ‘number-of-rows’, ‘number-of-pebbles-in-row’, and ‘total’, respectively.
 
    Both ‘total’ and ‘number-of-pebbles-in-row’ are used only inside the
 function and are declared with ‘let’.  The initial value of ‘total’
 should, of course, be zero.  However, the initial value of
 ‘number-of-pebbles-in-row’ should be equal to the number of rows in the
 triangle, since the addition will start with the longest row.
 
    This means that the beginning of the ‘let’ expression will look like
 this:
 
      (let ((total 0)
            (number-of-pebbles-in-row number-of-rows))
        BODY...)
 
    The total number of pebbles can be found by repeatedly adding the
 number of pebbles in a row to the total already found, that is, by
 repeatedly evaluating the following expression:
 
      (setq total (+ total number-of-pebbles-in-row))
 
 After the ‘number-of-pebbles-in-row’ is added to the ‘total’, the
 ‘number-of-pebbles-in-row’ should be decremented by one, since the next
 time the loop repeats, the preceding row will be added to the total.
 
    The number of pebbles in a preceding row is one less than the number
 of pebbles in a row, so the built-in Emacs Lisp function ‘1-’ can be
 used to compute the number of pebbles in the preceding row.  This can be
 done with the following expression:
 
      (setq number-of-pebbles-in-row
            (1- number-of-pebbles-in-row))
 
    Finally, we know that the ‘while’ loop should stop making repeated
 additions when there are no pebbles in a row.  So the test for the
 ‘while’ loop is simply:
 
      (while (> number-of-pebbles-in-row 0)