For those who haven't heard about the book yet: it is a practical description of the main data structures and algorithms in use today. The book is also featuring a presentation of the most important algorithm development techniques, as well a examples of the real-world use cases in each chapter. It uses Common Lisp as an implementation language, and also contains a crash course into the language if you are not yet familiar with it.
For those who have already seen or even read the previous version published on Leanpub, here is a summary of the updates: http://lisp-univ-etc.blogspot.com/2021/02/programming-algori...
As usual, AMA.
However I have to admit that the reliance on additional external libraries kind of had me a bit disappointed, but I can understand the reasoning and advantages behind such a decision.
As for remarks;
I second the reliance on the additional libraries; I think most readers are in fact, as you say in the book, purist... And won't like his reliance. No matter if it makes things better or not.
To that point; I personally like your opinionatedness in the book; on HN (etc) you would be shot down for many remarks you make in the book, but I like them here from people and do like that about the writing.
I wouldn't put smileys :) in a book like this, but that's a matter of taste.
And maybe a proofread by a native English speaker could have been good, but nothing was bad per se, it's just, having worked for 5 years in Ukraine (Lviv/Kyiv), that I recognize the way sentences are constructed and that is sometimes not the most readable in English. But I am not native English, and, again, for this kind of book, it's definitely fine, it would just be a bit of icing on the cake.
Second, Common Lisp is a general purpose, multiparadigm language. There's a lot to like about it. If you want to implement conventional procedural algorithms, the language is well-suited to writing in that style. If you want to adopt a more functional and recursive (versus iterative) style, it is similarly well-suited (though somewhat implementation dependent as CL, unlike Scheme, does not mandate tail call elimination, which can bite you in performance). If you want to write in an OO-style, it has a way to do that (though it is different than the OO-styles many people are familiar with so takes some time to learn). And if you like writing DSLs (but don't want to implement a full parser or an interpreter but would rather have something compiled for better performance), it's very well-suited for it.
Third, while it was commonly used for symbolic AI, it is not restricted to that domain. But, if that's what you want to use it for, you should look into the book Paradigms of AI Programming by Norvig (now available for free online) which is pretty much just about implementing now classic symbolic AI programs in CL.