Working through SICP in Clojure