# [racket] in praise of if's mandatory else clause

Hey, here is what I had written: see purpose statement:
;; N -> Boolean
;; simplistic definition
(define (leap-year? y)
(= (remainder y 4) 0))
On May 31, 2011, at 8:55 AM, Pierpaolo Bernardi wrote:
>* On Tue, May 31, 2011 at 07:07, Richard Cleis <rcleis at mac.com> wrote:
*>>* Buggy loops can also be avoided by reducing the problem. These leap-year cases are less troubling if the function that really matters is used: the days in a given year.
*>>*
*>>* (define (days-in-year year) (if (= 0 (remainder year 4)) 366 365))
*>*
*>* Please. I understand that it is just an example, and that you most
*>* certainly know the correct definition of a leap year, but someone might
*>* not know it and blindly copy this function somewhere where it can cause
*>* harm.
*>*
*>* Kids, use this one instead:
*>*
*>* (define (leap-year? year)
*>* (and (zero? (modulo year 4))
*>* (or (not (zero? (modulo year 100)))
*>* (zero? (modulo year 400)))))
*>*
*>* (define (days-in-year year)
*>* (if (leap-year? year)
*>* 366
*>* 365))
*>*
*>*
*>* 8^)
*>*
*>* P.
*