11 ms·
Let over Lambda – Common Lisp Book (2008)
- wirrbel 8y agoWorth a read because it is one the most condescending computing books I have ever read. While reading I got the impression that I read the text of a really immature fanboy in a web forum of the 2000s. I hope the author has matured by now. Seriously, don't buy this book.
- black-tea 8y agoI thought it was great, but I know it's not a book for snowflakes. When I hear someone say "this is right" or "this is wrong", I am able to effortlessly interpret this as "I believe this is right/wrong". It's just being efficient with language. I don't need people to add extra words for fear of offending me. Maybe the author was immature. That's great. Let it remind you what it's like to be young and so excited about something that you'd write a book about it. This book is great.
- damsdu78 8y agoDo you think it is useful for a Lisp noob?
- dan-robertson 8y agoI think it’s a great second book. For a first I’ve always recommended Practical Common Lisp. I don’t know if that recommendation is still up to date.
- TurboHaskal 8y agoI'd simply give newbies this link http://stevelosh.com/blog/2018/08/a-road-to-common-lisp/ http://stevelosh.com/blog/2018/08/a-road-to-common-lisp/
- zeveb 8y agoYeah, that's an excellent — and modern — guide.
- js8 8y agoI would recommend it to a Lisp enthusiast as a third after On Lisp. That's how I read it, anyway. Many things in LOL are quite opinionated. I don't think it's a distillation of knowledge (like On Lisp), but rather an exploration how far you can take some things (macros).
- qohen 8y agoAs a reminder, Paul Graham's On Lisp is freely downloadable, in PDF or PostScript via links on this page at PaulGraham.com: http://www.paulgraham.com/onlisptext.html http://www.paulgraham.com/onlisptext.html
- fiddlerwoaroof 8y agoThis book is sort of a trap because some of the macros it defines make assumptions that are not guaranteed by the language specification: every once in a while, you’ll find people on IRC or similar asking for help with some of the examples from this book. Also, IMO, the defmacro/g macro defined in this book would have been better defined as a reader macro than as a codewalking macro.
- lispm 8y ago> make assumptions that are not guaranteed by the language specification I haven't read it, I have to confess. It would be useful if those assumptions were explicitly mentioned and explained in the book. Some of the advanced macro stuff is easily outside of the standard and can be still useful, which for example lacks some of the environment features described in CLtL2.
- weavie 8y agoIf I recall somewhere around SBCL 1.2 they changed the way the backquote worked (totally fine for them to do that as it wasn't specified in the standard..) which broke the Let over Lambda macro. I think CCL still works. The code here should fix the problems : https://github.com/thephoeron/let-over-lambda https://github.com/thephoeron/let-over-lambda Note, it's been a while since I looked at it so I could have some of the details wrong. The book is still well worth reading to help you understand the possibilities with a programmable programming language, but just bear in mind the various caveats..
- TurboHaskal 8y agoDefinitely not. The book expands on pg's books and a prior read is recommended.
- pepper_sauce 8y agoRead On Lisp before Let Over Lambda, but after a beginner book like Practical Common Lisp.
- black-tea 8y agoNo, it's not. Others have suggested other great books for beginners, like Practical Common Lisp. You'll get the most from Let Over Lambda after you've already got a bit of experience with Lisp.
- varjag 8y agoI'm a long time Lisper myself but also couldn't get through this book. Maybe it's because am a snowflake, but my eyes rolled so often I was scared they'll get stuck in the up position.
- P_I_Staker 8y agoThis is a big problem I have with books in general. Inevitably, the author drones on about some bullshit, and the book gets thrown across the room, never to be picked up again.
- coldtea 8y ago>I thought it was great, but I know it's not a book for snowflakes. When I hear someone say "this is right" or "this is wrong", I am able to effortlessly interpret this as "I believe this is right/wrong". It's just being efficient with language. Or, as we used to call it: "It's all about having had a few conversations with actual people in the actual world".
- jwhite 8y agoI agree. Something that might be worth noting: two minutes of googling didn't turn up the author's age, but I recall seeing this photo on his website when I bought it some time after it was published in 2008: https://hcsw.org/contact.php https://hcsw.org/contact.php Here's a more up-to-date photo: https://hoytech.com/about https://hoytech.com/about It's possible he was quite young when it was published. If that's the case, then I think the book is all the more a towering achievement. It's abrasive, and it smells a bit of 2000s forum fanboy discussions, but mature people should be able to read past the more opinionated parts and find the gems in the technical treatment.
- mjaniczek 8y agohttps://letoverlambda.com/index.cl/guest/chap6.html https://letoverlambda.com/index.cl/guest/chap6.html Yeah, the sixth chapter sure bashes on Scheme a lot. :/
- pepper_sauce 8y agoGood heavens! Not Scheme!
- gekkonier 8y agoHey! Why so angry! :-)
- jhbadger 8y agoI always wonder if Common Lispers who bash Scheme know that Guy Steele (who also is the chairman of the Common Lisp standards committee) was the co-creator of Scheme.
- mruts 8y agoWell he also designed Java, so...
- lispm 8y agoThat's new. Where did you get that information from?
- eadmund 8y agoI can't speak for others, but I know that, and I think that it is consistent, rather than inconsistent, with my points 1) that Scheme is fine as an academic language and 2) Common Lisp is preferable for real programs. Scheme's simplicity is awesome if you're implementing it; it's awesome if you're learning it; it's not so awesome if you're trying to actually use it. As LoL notes, it's dumb to throw away information in conditionals. As LoL also notes, hygienic macros are toys and DEFMACRO is generally what you really want. I'll add that having only a single namespace for variables, classes, functions, types, packages & everything else means that you end up having to be extremely verbose: foo, fooClass, fooFunc, fooType, fooPackage. call/cc is incredibly cool & powerful, but also really hurts efficiency in a way that I don't think is acceptable in a production system (it's fine, of course, in a teaching language, because the experience of understanding it is really useful). dynamic-wind is broken compared to UNWIND-PROTECT. And on & on & on. Steele also wrote the Java spec, and he wasn't wrong when he said 'We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp,' but I don't think in 2019 anyone thinks that his involvement with Java means it is anywhere near as good, powerful or acceptable a language as Lisp.
- coldtea 8y agoOr, you know, the author knows his stuff and is deservedly condescending in an industry of trends and cargo cults. As in arts and politics, some curmudgeons are needed in every field, if not for anything else, to show that there's another way than the mainstream. (They don't have to be perfectly right either -- it's having a strong perspective that counts, nobody is 100% right anyway).
- varjag 8y agoThere are numerous great Lisp books by knowledgeable authors which have none of that attitude. Life is too short to read printouts of Usenet rants.
- coldtea 8y agoWell, to each their own. For me life's too short to read authors walking on eggshells. Of course for a technical book it's the technical content that matters -- whether it's presented politely or not.
- varjag 8y agoIn which way for example Siebel's PCL is "walking on eggshells"? On Lisp? PAIP? Am I super obtuse and missing some very obvious and important point they are tiptoeing around? Even if one does really think it's important to convey they are presenting superior technology, it can be stated clearly and concisely without sounding corrosive.
- letoverkappa 8y ago"Deservedly condescending" is not an actual thing that exists in the world. The words you're looking for are "writes poorly."
- coldtea 8y ago>"Deservedly condescending" is not an actual thing that exists in the world. There's absolutely no rational reason for it not to be a thing. "Politely condescending" might be a contradiction in terms, but some people just lend themselves to being treated condescendingly. Same thing with how some people might deserve a sarcastic response -- sarcasm is not that remote from condescension.
- t-sin 8y agoThis nice book is a Lisp book but also a Forth book. Forth is great.
- maze-le 8y ago>> it describes the most advanced features of the most advanced language: COMMON LISP ... really? the most advanced language (?), are we back in the 50ies again?
- Grue3 8y agoCommon Lisp was finalized in the 90s. And it's not its fault that the other languages haven't caught up yet.
- maze-le 8y agoStill, its a trip to hell to maintain any lisp codebase -- especially if it contains macros. I think it is actively hostile to collaborative programming, and that is a structural problem where there is no remedy but obscure programming patterns (which are amplifying these problems in some instances). With that in mind -- boasting about 'the most advanced language' is a bit of a stretch -- to say the least...
- 4thaccount 8y agoThey're looking at it from the point of one to a few coders and you're looking at it from an industrial view with larger teams. I think it probably shines more in the former. If macros aren't overused, it's probably not all that different from other dynamic languages like Python that work fine with larger teams.
- sametmax 8y agoIt is very different than Python. In Lisp, they say "here is a tool that can do anything. Have fun". In Python they say: "here are many tools that are specific and limited to that purpose. Also you gona take bad decisions, so we limited it some more". The first approach is appealing to very good programmers. The second one, to anybody who had to work with the vast majority of normal programmers. I prefer the second one. People abuse macros, make way to long lambdas, don't document their magic and indent poorly if they are not forced to. Since tooling is something people always learn too late, I'm going with the language with sane defaults.
- pepper_sauce 8y agoIt can be abrasive at times but is full of gems of knowledge. Well worth a read.
- letoverkappa 8y agoThis book has managed to convince me that common lisp is a great language for people who have never used a good programming language, and who you intensely dislike.
- FraaJad 8y agoI'm going to take the word of someone who made an account just to bash a poor lisp book. Thanks.
- tuukkah 8y ago> it describes the most advanced features of the most advanced language: COMMON LISP. I thought Haskell surpassed it a long time ago already.
- m00natic 8y agoSo where's Haskell's advanced object system or the restart/condition system that Common Lisp has? Even its performance is hardly on par with CL for all the flexibility of the latter.
- naasking 8y ago> So where's Haskell's advanced object system Doesn't need one. > restart/condition system that Common Lisp has Utility is questionable, but you could build one in the continuation monad.
- tuukkah 8y agoI'm not saying it has everything that Common Lisp has - it's different.
- agumonkey 8y agothe world needs less objects, you know the koan `objects or closures: yes`
- z3phyr 8y agoHomoiconicity, Macro System, Battle Tested
- eatonphil 8y agoI enjoyed this book. I personally did not find it condescending. Additionally, the implementation of a Forth interpreter in this book is the best introduction to Forth I've seen (even after years spent playing with Forth and reading one or two books on Forth). But I don't recommend this book as an introduction to (Common) Lisp. I recommend this order: 1. Practical Common Lisp 2. On Lisp (kind of a big jump, so maybe check out ANSI Common Lisp) 3. Let over Lambda 4. Lisp in Small Pieces (especially if you want to implement a Scheme or Common Lisp) With Common Lisp the Language (Guy Steele) and ANSI Common Lisp (Paul Graham) somewhere in the mix. These are all excellent books and must-reads for anyone interested in programming languages and/or the Lisp family.
- z3phyr 8y ago> 2. On Macros I have heard about On-Lisp. Is this the same reference?
- eatonphil 8y agoOops, Freudian slip. The entire book is about macros. Thank you!
- zoltar 8y agoGood list. Practical Common Lisp deserves that spot at the top. It's very approachable and provides examples of all those features you keep hearing good things about. I remember running through the spam filter chapter and finding an email that SpamAssassin misclassified about four years prior. I think my favorite Forth introduction comes at it from the other direction, though: https://github.com/nornagon/jonesforth/blob/master/jonesforth.S https://github.com/nornagon/jonesforth/blob/master/jonesfort...
- eatonphil 8y agoThat is a really impressive guide.
- radiator 8y ago- COMMON LISP: A Gentle Introduction to Symbolic Computation (1990) - Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp (1991) - Common Lisp Recipes (2015)
- agumonkey 8y agoslightly related: the clasp/cando team has some news to share Putting this here because I'm not aware of a lot of research done in/with lisp these days (only other thing I know is the quantum computer dsl) https://old.reddit.com/r/lisp/comments/axu858/here_is_what_we_are_doing_with_common_lisp/ https://old.reddit.com/r/lisp/comments/axu858/here_is_what_w... > This our (thirdlaw.tech's) computational chemistry system Cando. Some might remember it from Lisp conferences or our previous videos. Here is a demo of going through a free energy perturbation calculation. FEP is very important in chemistry right now. https://www.youtube.com/watch?v=hZRuGt4TcD8&list=PLbl4KVdl9U3I3MhFWgauT0cz-x7SymZmn&index=4&t=0s https://www.youtube.com/watch?v=hZRuGt4TcD8&list=PLbl4KVdl9U...
- cracauer 8y agoThat is me, I'm half of that team (Martin Cracauer). If you have any questions I'd be happy to answer. If you want to learn more about the programming side of our work (not so chemical), check out our other videos. They are from programming conferences: Longer talk: https://www.youtube.com/watch?v=8X69_42Mj-g&t=177s&index=3&list=PLbl4KVdl9U3I3MhFWgauT0cz-x7SymZmn https://www.youtube.com/watch?v=8X69_42Mj-g&t=177s&index=3&l... Shorter one from the LLVM meeting: https://www.youtube.com/watch?v=gYYH2zF41fc&list=PLbl4KVdl9U3I3MhFWgauT0cz-x7SymZmn&index=2&t=201s https://www.youtube.com/watch?v=gYYH2zF41fc&list=PLbl4KVdl9U... (yes, the whole system is a compiler using LLVM as the last stage to make machine code from abstract assembly. The thing I always missed in SBCL)
- VLM 8y agoInteresting, possibly flawed analogy: The Build Your Own Lisp book explains how, and the LoL book explains why. Build your own lisp book is the natural pairing for LoL, despite many people claiming it goes best with Seibel's common lisp book or whatever. Seibel's book is good, don't get me wrong; I just don't think its the proper pairing in the sense of culinary arts putting together a plate of well paired books. The common lisp people and the clojure people fight viciously as only siblings can; this will infuriate those in the common lisp tribe but the ideal introductory lisp book in the general sense of the language is probably not Seibel's book its probably the comedic Clojure for the Brave and True. Not aware of anything quite like that, for common lisp.
- rhizome31 8y agoIs there a prominent open source project written in Common Lisp? Something like Pandoc for Haskell or RabbitMQ for Erlang?
- cracauer 8y agoCommon Lisp has a package manager/source repository called Quicklisp. https://www.cliki.net/Quicklisp%20tutorial https://www.cliki.net/Quicklisp%20tutorial There are some web frameworks in there that are fairly impressive. There is very little advertising going on. It goes a bit back to what your folks mentioned here, a bit of dejection and being condescending to other languages. Common Lisp is the only language with reasonable compile-time computing right now, and it is hard to bring that concept over to people who still think about writing software, as opposed to living with changing software for 30 years. So the Lisp community is a bit in the mindset that those who get it do so on their own, and software is distributed among those who already know they want. The Cando chemical computation system (based on Clasp) in the video posted below/above is open source, BTW.
- vram22 8y ago>Common Lisp is the only language with reasonable compile-time computing right now How does D compare, with its CTFE (Compile-Time Function Evaluation/Execution)?
- cracauer 8y agoActually the whole cl-jupyter concept (used in the Cando demo) might also qualify. You can build really impressive blends of text-based statement and GUI in a webbrowser with Jupyter notebooks, and the CL version really kicks ass. I need to get cracking on backporting the changes we made to cl-jupyter for Cando/Clasp to portable Common Lisp tho. Sigh. So little time.
- rhizome31 8y agoThanks. As someone who is very much into Jupyter, this hits home! I don't know anything about chemistry, but the demo looks cool :)
- ratsimihah 8y agoI tried to read it as a first Lisp book, that was very theoretical. I just write Lisp these days while looking up what I need on-demand. Will probably give it another read when I have a better idea of what Lisp is.
- ravieira 8y agoI bought Land of Lisp by Conrad Barski but never really read it due to procrastination. I really wanna read Lisp one day. Also, I didn't see Land of Lisp mentioned here. What do experience lispers think about it?
- talaba 8y agoI have some experience with Common Lisp, although not too much. I have read Land of Lisp and enjoyed it very much. It may not adhere to software engineering best practices, such as avoiding mutating the global state, etc., but for learning CL without getting bored, this is the book.