solving 99 lisp problems in clojure