(module date mzscheme (require (lib "etc.ss") (file "base.ss") ) (provide (all-defined) ) (define (leap-year? year) (if (= (remainder year 4) 0) (if (= (remainder year 100) 0) (if (= (remainder year 400) 0) #t #f) #t) #f)) (define days-in-month (opt-lambda (month [year 2001]) ; non-leap-year by default (case month [(9 4 6 11) 30] [(2) (if (leap-year? year) 29 28)] [(1 3 5 7 8 9 10 12) 31] [else (raise-exn exn:fail:unlib (format "Month out of range: ~a" month))]))) )