Annotated SICP
- Structure and Interpretation of Computer Programs
- Front Matter
- 1 Building Abstractions with Procedures
- 2 Building Abstractions with Data
- 3 Modularity, Objects, and State
- 4 Metalinguistic Abstraction
- 5 Computing with Register Machines
- References
- List of Exercises

It took me a while to get this new-if working in clojure, but here’s what I came up with. Any suggestions?
(def new-if (fn [predicate then-clause else-clause]
(cond predicate then-clause
:else else-clause)))