April 22, 2009

Review: Let Over Lambda

So after a lot of not reading Doug Hoyte's Let Over Lambda, I finally did manage to read it all the way through.

My overall impression first: Hoyte styles the book as a successor to PG's On Lisp; I think Let Over Lambda falls short of that goal, although it does contain enough interesting material to make the book worthwhile.

The best parts of the book are the chapter on read macros and the subsection on sorting networks. Great, practical examples and illustrations of good programming style.

The worst parts of the book are the chapter on implementing a Forth interpreter in Lisp and the "caddar accessor generator" (it's ok for me to say this because the name of this blog is ironic).

The chapter on anaphoric macros has finally made me change my mind about those things. It's ok, use them when you need them. All the stuff about "sub-lexical scoping" (ie - various interesting ways of using macros to capture free variables) didn't really make a deep impression on me - maybe I'm just too dull to see any good uses for that.

As pointed out in other reviews, the book could have used a lot more proofreading (esp of the code) and editing. Hoyte chose to self-publish the book, which I think was a mistake (and just today Tim Ferriss blogged about some other reasons why it's not a good idea).

To cap the review, don't read Let Over Lambda until you've read On Lisp. It's a fun book about some interesting Common Lisp programming techniques, but it could have been shorter.


jonathlee said...

I recently purchased and read "Let Over Lambda" after you mentioned it. Personally, I liked it a lot. My take on the chapter on implementing a Forth-like language was that it provides a much needed example of how you can fundamentally change Lisp to meet your needs. As was mentioned in the book, because Lisp has such a powerful macro system, even if it is a "blub" language compared to another language, it can become a non-"blub" language through the use of macros. A more historic example is the inclusion of CLOS into pre-Common Lisp lisps. Earlier lisps were "blub" languages to SmallTalk and other languages that had objects. The inclusion of CLOS and other experimental object systems allowed those lisps to become "non-blub" languages.

I haven't yet watched the videos Tim Ferris posted on why he doesn't like self-publishing, but I do think that there are fundamental differences between the kind of book he and the person he produced the videos with wrote and "Let Over Lambda". Both the book Tim wrote and the one his co-producer wrote are the type with a wide appeal (as are most books about working less and getting rich). In the blog entry he states that both of the books have been on the New York Times best-seller list for a while. Fundamentally, any book on Lisp is written for a niche market. I don't care who your publisher is, it probably won't sell more than 20,000-30,000 copies, and that only if it is wildly popular. If you can prove differently, I would be interested to read it, but my understanding is "Practical Common Lisp" hasn't even sold that many copies and it has been one of the best introductory Lisp books out there. Additionally, there are some advantages to self publishing, especially with Lulu. Namely, because you don't print out a huge number of copies at any one time, you can update the copy at will. I don't know if Doug Hoyte will take advantage of that ability, but it is there.

Doug Hoyte said...

Hi Vladimir,

Thank you for reading and reviewing my book.

As you can probably tell, I am a programmer, not a professional writer. Writing and publishing the book was an experiment for me. Having nothing else to compare it to, I'm not sure if self-publishing was a mistake or not.

As you mention, definitely the book could have used more proof reading. On the other hand, there is no copy-edited, cover-our-asses, watering-down by people that don't even care about lisp. Basically I just like the freedom to do things how I want to do them and isn't that what lisp is all about?

With respect to anaphora, they aren't the solution to everything and you can get very far without ever using them, but I think for certain macros they are just what is needed.

If you're interested, for a more practical example of sub-lexical scope check out the if-match macro in the production lol.lisp code.

Thanks again for your comments and happy lisping,

Doug Hoyte

Robert Synnott said...

I must say, I was severely put-off by the anti-CLOS attitude (which fits in with being a Paul Graham successor, actually), and the tendency to name special variables without their *stars*.

Also, well, this: "Only the top percentile of programmers use lisp and if you can understand this book you are in the top percentile of lisp programmers." Urgh.

And yep, self-publishing this sort of thing is weird. He's clearly not expecting to make any significant money off it anyway (even people who write published books on popular languages don't do that), so why even bother? Put it on the web for free.

Vladimir Sedach said...

Just came across a glowing review (from someone who is apparently somewhat new to CL and hasn't read On Lisp yet) today: http://swizard.livejournal.com/115432.html (in Russian).

The consensus that is shaping up seems to be that more experienced Lispers are less impressed with the book than people who are in the process of learning Lisp. Interesting!

As for self-publishing and sales figures, I came across a very interesting article on the subject in the May edition of United Airlines' Hemispheres magazine (not yet available online). Apparently some authors with book publishing deals still elect to hire their own editors with their own money!

Sales figures of 10,000 - 20,000 books are actually very good for today. I didn't realize how good until I read the above-mentioned article: "93 percent of traditionally published books sell only 1,000 copies." I think the only country where technical books regularly had sales in excess of 100k copies was the Soviet Union. India and China today would probably match that figure, but most tech books there are pirated electronically or via photocopiers.

Vladimir Sedach said...

The Hemispheres article has now been posted online:

http://www.hemispheresmagazine.com/2009/05/01/self-publishing-is-becoming-respectable-—-even-for-the-pros/More interestingly, Douglas Crockford has just posted his quarterly royalty statement from O'Reilly on his blog!

http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li?p=1002JavaScript: The Good Parts has been out for a year, and since the beginning of 2009 has sold 6,633 copies. This tells both about what kind of sales figures you can expect for a very successful programming book, and how little money you're going to make off of it!