and とか or で値が返されるの面白いね
(def fizzbuzz
#(or
(and (= (mod % 3) 0) (= (mod % 5) 0) "FizzBuzz")
(and (= (mod % 3) 0) "Fizz")
(and (= (mod % 5) 0) "Buzz")
%))
(doseq [x (range 1 21)] (println (fizzbuzz x)))

無限シーケンスのところまだあんまりよくわかってないから明日の自分に任せた