eintr: print-graph Varlist

 
 C.1 The ‘print-graph’ Varlist
 =============================
 
 In writing the ‘print-graph’ function, the first task is to write the
 varlist in the ‘let’ expression.  (We will leave aside for the moment
 any thoughts about making the function interactive or about the contents
 of its documentation string.)
 
    The varlist should set several values.  Clearly, the top of the label
 for the vertical axis must be at least the height of the graph, which
 means that we must obtain this information here.  Note that the
 ‘print-graph-body’ function also requires this information.  There is no
 reason to calculate the height of the graph in two different places, so
 we should change ‘print-graph-body’ from the way we defined it earlier
 to take advantage of the calculation.
 
    Similarly, both the function for printing the X axis labels and the
 ‘print-graph-body’ function need to learn the value of the width of each
 symbol.  We can perform the calculation here and change the definition
 for ‘print-graph-body’ from the way we defined it in the previous
 chapter.
 
    The length of the label for the horizontal axis must be at least as
 long as the graph.  However, this information is used only in the
 function that prints the horizontal axis, so it does not need to be
 calculated here.
 
    These thoughts lead us directly to the following form for the varlist
 in the ‘let’ for ‘print-graph’:
 
      (let ((height (apply 'max numbers-list)) ; First version.
            (symbol-width (length graph-blank)))
 
 As we shall see, this expression is not quite right.