Confused? Type help



> comment

You know I was thinking exactly the same thing! You know what happened to me the other day?!?! This:

CLtl2 review
Mon, 03 Jul 2006 12:52:17

A few weeks ago i finished Common Lisp: The Language, Second Edition, by Guy L. Steele Jr.. It was one of the best books i have read in a while. I guess it's because i like reading VCR manuals, legal disclaimers and the like. Well, CLtl2 is the alpha and the omega of manuals. I really liked it. Not just because of its length (a thousand pages); there are manuals to be found that are a lot stiffer. But also because Steele has a very fluid writing style, the book is full of neat behind the scenes factoids and the second edition writings are clearly seperated from those of the first edition by a vertical line in the left margin. This makes for NEVER (almost) a boring moment.

As you can figure out i'm kind of a fan of this document, and so i want to promote it. It's never on one of those learn lisp lists and i fear there might be some prejudice against it. Yet it also feels a bit silly, recommending the language specification for a better understanding of Lisp. Ah well, i've done more silly lisp-related things of late.

First of all the writing style. It's very clean. Steele gives you exactly enough information to understand what he's trying to tell you. When you are in need of an example, he gives it. Everything is easy to understand. This shows more when you hit on the supplements to the second edition, which are written by others. Apart from that he gives us gems of understanding, like:

"I have observed that, while most Common Lisp users pronounce macrolet to rhyme with 'silhouette,' a small but vocal minority pronounce it to rhyme with 'Chevrolet.' A very few extremists furthermore adjust their pronunciation of flet similarly: they say 'flay.' Hey, hey! Très outré."

Steele added this in the second edition, as a stand-alone note. Totally pointless. Further on in the book he will go on for quite a bit with over the top nonsense about flogging a dead horse for example. Entertaining for sure.

The main reason for reading the text is of course to know the nooks and crannies of the language. I found it deeply irritating to not know what shared-initialize means or how the read-table works. Or worse: to know there is perhaps a way to get around an irritating problem and to not know about it because you don't know where to look. Of course CLtl2 didn't let me down. After reading, one can safely say that Common Lisp is the bomb. The most enjoyable to read was the part about the readtable, because that was just a black hole to me. To know there is yet another level of coding with which you can fuck up the understanding of the program... ehh i mean with which you can attack problems from another angle, was very cool. I liked the integration of data types in the object system, i liked the object system, the printing facilities and also the curious appendices at the end about series, generators and gatherers.

Those appendices are the dead sea scrolls of Common Lisp one might say. According to the preface they were considered by X3J13 in 1989 but were thought to be not mature enough. Steele just put them in anyway, because they might be and because he thought they might be of use to Common Lispers. However it is to bad that i couldn't find any other reference about what happened. Usually the hyperspec notes these sort of decisions by X3J13. They do however exist as a library. It's called series, and the site doesn't mention them, but the generators and gatherers from appendix B are also included. From the Sourceforge download page: 'In a nutshell: Think "Efficient MAPCAR" SERIES translates functional-style expressions into efficient loops. Series are to loops as control structures are to GOTOs.' The package has some includes some neat ideas i think. It's got lazy evaluation and it mixes in a nice way with normal code. But under the covers they are converted into loops and you have to keep track of a few things if you want to keep them efficient.

The ideal moment to read this text would be after your first or second lisp book. You would first want to get your feet wet and you would want to have a bit of a lisp model in your head before you read slabs of specific information. Also you wouldn't want to be too much of a lisp crack, i would imagine. Then the text might just be a bit to obvious, and it would perhaps get tedious.

And CLtl2 is not for everybody. Some great reading-fun is to be had in the review section of Cltl2's Amazon page:

"I'm absolutely certain that CLtL's 4 star review average is indicative of some larger evil. ... [snip] ... A lot of the prose rambles, with remarkably little content. Most of the time, the text sputters along, the flow will just get started, when it is interrupted by a change bar: "In 1988, ANSI voted to blah blah blah..." Reading this book is like riding the bumper cars at an amusement park. It is both visually and mentally jarring. And the examples? There are plenty of hackneyed examples, but almost no useful ones. Last night I ran across an example where the author flat out admits, in the text, that it is a useless and trivial exercise."

Of course there are always complaining people around to trash beauty all over the globe. In the case of CLtl2 people mostly complain that it doesn't conform to the ansi standard. This is true, but those differences are not all that big (scroll down to 2.2.1.), and as an overview text it's a hell of a lot more readable than the hyperspec. Also read about the differences between clhs and cltl2 in this recent post by Kent Pitman. Also got some nice lore in it.

Well, go buy CLtl2! Or read it online. The online html version seems to be wiped from the main CMU site, but it's available at for example this french mirror.


comments

on Mon, 03 Jul 2006 14:02:31 Luís Oliveira said:

For people reading or planning to read CLTL2, I think this is a must have:

Converting CLtL2 to ANSI CL


on Mon, 03 Jul 2006 14:33:49 Luís Oliveira said:

Oh, I see one of your links has a list like this. Nevermind.


on Fri, 10 Aug 2018 03:37:16 comment said:

comment


on Thu, 16 Aug 2018 21:12:02 comment said:

comment


on Thu, 16 Aug 2018 21:12:20 comment said:

comment


on Thu, 16 Aug 2018 21:13:01 comment said:

comment


on Thu, 16 Aug 2018 21:13:41 comment said:

comment


on Sun, 19 Aug 2018 08:14:18 help said:

comment


on Mon, 20 Aug 2018 01:46:37 comment said:

comment


on Mon, 20 Aug 2018 13:59:06 comment said:

comment


on Tue, 21 Aug 2018 13:14:20 comment said:

comment


on Tue, 21 Aug 2018 13:14:39 comment said:

comment


on Tue, 21 Aug 2018 13:15:04 comment said:

comment


on Tue, 21 Aug 2018 13:15:18 comment said:

comment


on Tue, 21 Aug 2018 13:15:34 comment said:

comment


on Wed, 22 Aug 2018 22:06:13 comment said:

comment


on Wed, 22 Aug 2018 22:06:26 comment said:

comment


on Wed, 22 Aug 2018 22:06:43 comment said:

comment


on Wed, 22 Aug 2018 22:06:56 comment said:

comment


Want to comment? Type comment. Type something else to randomy chat a bit. I won't bite.

>