Hey there,

I'm just getting started with Lisp/Scheme/Racket and going through
HTDP.  I'm loving it and learning much along the way.  Thank you
Matthias, Robert, Matthew, and Shriram for everything you've done
here.

Anyways I have a question about exercise 9.5.4; the problem statement being:

"Develop the function check-range1?, which consumes a list of
temperature measurements (represented as numbers) and checks whether
all measurements are between 5*C and 95*C."

I have managed to create a working solution as follows:

;; check-range1? : list-of-numbers -> boolean
;; checks whether temperatures in a-list-of-temperatures are between
5*C and 95*C
;; examples:
;; ...
;; ...
;; ...
;; body:
(define (check-range1? a-list-of-temperatures)
 (cond
   ((empty? a-list-of-temperatures) true)
   (else (and (and (> (first a-list-of-temperatures) 5)
                   (> 95 (first a-list-of-temperatures)))
             (check-range1? (rest a-list-of-temperatures))))))

Everything works as it should, except when testing the program against
an empty list...it returns true, naturally.  However, logically I feel
that an empty list should produce false, as it doesn't contain any
temperatures between 5*C and 95*C.  Am I thinking incorrectly and the
program is fine? Or is this logic correct and the program is wrong?  I
know that if I were to change ((empty? a-list-of-temperatures) true)
to ((empty? a-list-of-temperatures) false) then an empty list would
produce false, but so would all results as false would recursively
traverse the list.

Any thoughts will be greatly appreciated!

-- hakkum

_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/users

Reply via email to