Taking a break from SICP
At almost 500 pages in, I’ve completed about half of the wizard book (chapters 1-3) and I’ve decided to take a break from reading it.
My primary intent of reading SICP was to learn functional programming, and I think the first 2 chapters were amazing for this.
The first 2 chapters require you to code in a pure FP subset of Scheme, and learning and completing the exercises under these constraints has been monumental for my FP journey.
At first I struggled with solving problems with no mutation and side-effects, along with the S-expression syntax of Lisp, but as I completed the exercises I gradually became more comfortable programming without mutable assignments and I became extremely confident with employing fundamental FP techniques like recursion, iterative recursion, higher-order functions, array functions, etc.
Chapter 2, in particular, was long and dense with many exercises but I had a great deal of fun. The most mind-bending of them was probably the church numerals problem.
Chapter 3 was a bit of a departure from this. The first half of this chapter made us learn how to implement OOP with the mutability features of Scheme. While I found it interesting, it was less about FP and my primary intent of reading SICP was still to learn FP.
Unfortunately the rest of the chapters seem to follow this trend, so I have decided to suspend my reading of SICP, at least for the time being.
The latter chapters are very, very cool. You build a Scheme interpreter in Scheme, you build a virtual register machine, and then you build Scheme once again using the instruction set of this register machine.
I will most definitely return to these chapters at a later date.