Little Books
Earlier this week I was excited to stumble across a new book in "The Little XXX" series by Daniel P. Friedman et al. The latest one, The Little Learner is about deep learning and teaches you the concepts by building an implementation, step by step, in Scheme. Thanks to the efficiency of Bookshop.org a copy arrived on my doorstep yesterday and it looks like it's going to be a fun read.
My first encounter with this series came more than 20 years ago when a good friend recommended The Little Schemer. The books are presented as a dialogue with the reader; each page has a line down the middle with a question on the left and an answer on the right. The idea is that you read the question and think about it (or perhaps try out the code on a computer) before reading the answer. They are light-hearted, with cartoon diagrams and calls to reward yourself with peanut butter and jelly after mastering a new concept. I remember being a bit put off by the format on my first encounter, but a few pages in I was hooked. While the questions start off easy, they ramp up quickly to introduce advanced concepts that can be quite challenging.
I went on to read The Seasoned Schemer and, a few years later, The Reasoned Schemer, about relational (logic) programming. This last one took me several attempts but helped me get to grips with Clojure's core.logic
library, a port to Clojure of the Mini Kanren language covered in the book.
Now that my appetite has been re-whetted, I've placed an order for two more books in the series: The Little Typer, an introduction to dependent types, and The Little Prover about computer proofs. These should keep me busy for a while...