『実践Common Lisp』18章を読んで、さらに別の書き方を思いついた。format関数の条件制御構文を使用する。
(defun fizz-buzz-format (n) (let ((s (format nil "~[Fizz~;~]~[Buzz~;~]" (mod n 3) (mod n 5)))) (format t "~a~%" (if (string= "" s) n s))))
2つのformat関数を1つにまとめるのは…無理かな?
追記:思いついた
(defun fizz-buzz-format2 (n) (format t "~[Fizz~;~]~[Buzz~;~]~@*~[~:;~[~:;~a~]~]~%" (mod n 3) (mod n 5) n))
わずか一行に収まるとは。