FizzBuzz を書いてみた


(define (check num)
(cond [(zero? (modulo num 15)) 'FizzBuzz]
[(zero? (modulo num 3)) 'Fizz]
[(zero? (modulo num 5)) 'Buzz]
(else num)))
(define (fizzbuzz num max)
(print (check num))
(if (< num max) (fizzbuzz (+ num 1) max)))
(fizzbuzz 1 20)
こんな感じかな。
(< num max) が偽になった際に返す値を定義してないので、インタプリタの最後に #<undef> が出るのが気に入らないけど。式だから何かを返さないといけないと思うのだけど、こういう時はどうしたらいいんだろう。そもそも print を目的として手続きを考えてはいけないのかな。