SICP solutions in clojure