Structure and Interpretation of Computer Programs, in clojure.