SICP Distilled Now Public
I have made the SICP Distilled site public.
It is now a year since the SICP Distilled Kickstarter was funded, I originally thought it would take 5 months to complete and had a slightly different vision for what it would look like, massive thanks to all of the supporters for their patience and understanding.
I originally thought an accompaniment to the original book but it has wound up being more like a rewrite, fortunately the original text is under a Creative Commons Attribution-ShareAlike 4.0 License so I can ‘remix’ it without getting into copyright issues if I have the same licence.
It is not complete yet, but I think I now have good explanations of:
Which really are (for me at least) the highlights of the book.
I think the projects make it easier to engage with the ideas than the book’s exercises. The content from Ch1 is complete (I may add another couple of projects). Have a look at Ch1 Distilled for more on what is different from the original.
I have just published a straight translation of the rational number example from Ch2, in the SICP style. I will publish a more idiomatic Clojure version of the example and go on to implementing sets and the encoding trees more idiomatically too. Again Ch2 Distilled goes into more detail.
Ch3 I am still not totally settled on what to do, probably just a standard description of how Clojure handles state, talk about concurrency vs parallelism and do a project based on it. I think SICP accepts the importance of concurrency but we just didn’t have as good techniques to handle it then.
I am pleased that I was able to do a purely functional interpreter for Ch4, I will add a section on making it lazy (and getting streams for free then, important as I am not including them as part of Ch3). The logic programming section might use μkanren rather than translate SICP’s.
I have avoiding thinking about Ch5 too much till I pin everything else down, I have jumped around the book too much already and people that needed the simpler material at the beginning have waited longer than they should have. I still like the idea of doing a very basic LLVM compiler though.
Since starting the project, I found Composing Programs a re-imagining of SICP in Python. It is great and I think complementary to SICP Distilled, they have interesting additions to and selections from the text. I plan to write an interpreter for a subset of Python in Clojure using Instaparse which will complement their Scheme in Python.
I hope you enjoy what is there, any issues with the content please ask on gitter or raise an issue on github