[racket] HTDP Help -- 9.5.4

From: Hendrik Boom (hendrik at topoi.pooq.com)
Date: Wed Jul 13 16:13:56 EDT 2011

On Wed, Jul 13, 2011 at 04:04:15PM -0400, Stephen Bloch wrote:
> On Jul 13, 2011, at 1:08 PM, H Bakkum wrote:
> > "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."
> > ...
> > 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.
> The question wasn't "are there any temperatures between 5 and 95?", it was "are there NO temperatures OUTSIDE the range of 5 to 95?"  Which is clearly true of the empty list: it has no temperatures at all, hence certainly none outside that range.
> This is one of my favorite problems.  A closely related problem is
> "Develop the function multiply-all, which consumes a list of numbers and returns the result of multiplying them all together."
> As with check-range1, the interesting question is "what's the right answer to the empty case?".

This was fought out at great length by philosophers and logicians in 
the 19th century.  The final consensus, generalized by mathematicians, 
is that when you foo together a bunch of things, and the 'foo' operation 
is associative and has an identity, the reult on an empth bunch is the 
identity of the operator.

-- hendrik

Posted on the users mailing list.