# [plt-scheme] Re: HTDP Exercise 9.5.7

I apologize for posting complete code to a book exercise, it won't
happen again! That said, I appreciate the feedback from everyone and
I'm glad to see that I'm on the right track.
On Apr 13, 12:12 pm, S Brown <ontheh... at gmail.com> wrote:
>* I'm working my way through HTDP and I have a question regarding
*>* Exercise 9.5.7. The exercise asks you to define the function average-
*>* price, which takes as it's input a list of prices, and gives as output
*>* the average of the prices in the list. I came up with the following
*>* solution:
*>*
*>* <pre>
*>* (define (checked-average-price toy-list)
*>* (cond
*>* ((empty? toy-list) (error 'checked-average-price "expected a non-
*>* empty list"))
*>* (else (average-price toy-list))))
*>*
*>* (define (average-price toy-list)
*>* (cond
*>* ((empty? toy-list) 0)
*>* (else (/ (sum-list toy-list)
*>* (num-items toy-list)))))
*>*
*>* (define (sum-list a-list)
*>* (cond
*>* ((empty? a-list) 0)
*>* (else (+ (first a-list)
*>* (sum-list (rest a-list))))))
*>*
*>* (define (num-items a-list)
*>* (cond
*>* ((empty? a-list) 0)
*>* (else (+ 1 (num-items (rest a-list))))))
*>* </pre>
*>*
*>* I came to this solution after not being able to figure out how to keep
*>* track of the sum of the items and also the number of items at the same
*>* time. So my concern/question is, is my solution acceptable, or should
*>* I keep trying to figure out how to keep track of both values (sum and
*>* number of items) without resulting to helper-functions such as sum-
*>* list and num-items? Thanks.
*>* _________________________________________________
*>* For list-related administrative tasks:
*>* http://list.cs.brown.edu/mailman/listinfo/plt-scheme
*