Today I read the whole day in the CTM book. It was tough, I have been reading around 30 pages in 5 hours. The rest of the time I used to get a soup for lunch (broccoli with grated cheddar topping. I’ll try to cook it some time soon.) and to write a blog post about why it makes sense to learn Emacs. I also kept a bit up with Zulip development, but did not do much besides observing the chat.

Reading the book reminded me a lot of my first semesters of studying Computer Science. For example tree traversal algorithms like DFS and BFS were discussed at some point. I found the concept of a difference list kind of difficult and it took me a while to understand the semantics. I think it helped, that I picked up some Prolog last week, as the difference list has its origins there. But I’m not sure if I can explain, why you should need this.

The authors show, that in the case of recursive algorithms, a lot gets computationally more performant when an accumulator is introduced. An accumulator is something I’ve also seen in my first semester, but I wasn’t aware that there is a whole theory behind them. Difference lists are a special form of accumulator. Because the allow appending lists in constant time, then are used for certain kinds of list recursion, for example flattening nested lists. I didn’t quite understand it, but it seems difference lists are more a way of thinking about lists than their own data structure.

My reading goal was almost the doubled amount, I targeted for around 20 pages more. Until Wednesday the planned amount is 30 pages more on top. I don’t want to be bookworming the whole beginning of the week. Not sure what to do about that. One option is to quit the reading group and start implementing Oz on my own. As I won’t be able to implement everything anyway, there might be no point in reading so much of the theory.

Another option is, building something with the mozart system. Maybe see how Oz is suited to write a Sudoku solver.