ksbszabo@wateng.UUCP (Kevin Szabo) (05/29/85)
Subject: Lisp Text "LISP" by Winston & Horn: is the 2nd Edition better? I asked this question a while ago and received a number of enlightening responses. Thanks to all that replied, I am sorry that this summary has taken so long to get out but I had a thesis deadline sneak up on me! I ended up buying the first version mainly because it was in stock at our bookstore and I was in a hurry at the time. I would have preferred the 2nd edition under other circumstances. Here is what a few of our colleagues had to say: -------------------------------------------------- I bought the 1st edition long ago and recently bought the second edition. The second edition is very different from the first (MacLisp vs. Common Lisp among other things). The typeset quality of the new edition is also much better (i.e., more readable). When Horn was here last year he mentioned the changes that would be in the second edition. Lots of them. Wait for the new book!...todd Todd Ogasawara Computer Sciences Corp. NOSC-Hawaii Laboratories --------------------------------------------------- The second edition is based on Common Lisp. This is important if you think common lisp is important. The rest is essentially unchanged. Marty Sasaki Havard University Science Center --------------------------------------------------- I am not pleased with Winston & Horn's approach to teaching LISP. I feel that they present LISP as a mere collection of features. Their programming examples seem unstructured and unmotivated. I bought the 2nd edition because it said CommonLisp. Unfortunately, it seems to be the same old thing, with CommonLisp syntax placed on top of MacLisp. None of the advantages of MacLisp over CommonLisp are exploited. The only LISP book that I am happy with (and I'm *very* happy with it) is Artificial Intelligence Programming by Charniak, Riesbeck & McDermott. It covers the language with the design techniques: modularity, data driven programming, generators, macros, pattern matching, etc. It also shows how to implement a scheme-like LISP. If they rewrote it in CommonLisp, I'd buy a dozen! Greg (sdcsvax!davidson) ------------------------------------------------------- The first edition teaches MacLisp (which nobody outside of MIT uses). The second edition uses Common Lisp (which is becoming somewhat of a standard). The second edition is nice, *but* they tend to leave out things. For example when they discuss property lists they mention how to get values off the plist (with get) but they do not mention the function to put properties on the property list (put). Instead they use a macro (setf) which is used to set other things as well. I wish they had a list of all Common Lisp functions as they do with the MacLisp functions in the first edition. wisc-ai!neves (David Neves) ---------------------------------------------------- Kevin, Winston's AI, second edition and Winston's LISP, first and second editions are outgrowths of his AI, first edition. So if you want one intro book that has both topics in AI and LISP his AI, first edition is the one to get. However if you want two books with more detail and covered topics his AI, second edition and LISP, second edition are worth ordering. Gerry Mayer (Raytheon Research Division) ...linus!raybed2!gxm ---------------------------------------------------- There are changes. My philosophy is that a second addition always has the opportunity to improve on the first. Why spend money on something out of date. Steve Lazarus (415) 852-4203 Ford Aerospace ...fortune!wdl1!sml (USENET) ---------------------------------------------------- Thanks to all! Kevin -- Kevin Szabo watmath!wateng!ksbszabo (U of Waterloo VLSI Group, Waterloo Ont.)
barmar@mit-eddie.UUCP (Barry Margolin) (06/03/85)
In article <2433@wateng.UUCP> ksbszabo@wateng.UUCP (Kevin Szabo) writes: >For example when they discuss property lists they mention how to get >values off the plist (with get) but they do not mention the function to >put properties on the property list (put). Instead they use a macro >(setf) which is used to set other things as well. > >wisc-ai!neves (David Neves) Common Lisp doesn't have a "put" or "putprop" function. The only way to put items on the property list in Common Lisp is with "setf". These functions were probably not included so that the CL designers didn't have to decide between the various incompatible argument orders that were used by the corresponding functions in the dialects that were being coalesced into CL. If you want a Maclisp-style putprop, it is an easy function to define given the CL facilities: (defun putprop (symbol value indicator) (setf (get symbol indicator) value)) By the way, I don't think "setf" is a macro in CL (it is a macro in Maclisp and Zetalisp). If it were, then there would have to be a "put" or "putprop" for it to expand into in the above use. But for many structures, such as property lists and arrays, "setf" is the only setter defined by the language, so it has to be a special form. Unfortunately, I'm not at my office (where my copy of Steele's CL book is) right now, so I can't check this out for sure. -- Barry Margolin ARPA: barmar@MIT-Multics UUCP: ..!genrad!mit-eddie!barmar
gxm@raybed2.UUCP (GERARD MAYER) (06/03/85)
Having originally learned LISP using Winston's AI (first edition) and the Franz LISP manual (BSD 4.1, Opus 33b); and having read most other LISP books including Charniak's et. al., Abelson & Sussman's, Winston's LISP books, and Steele's, I think LISPcraft by Robert Wilensky, W. W. Norton & Co, 1984 is clearly the best. It is explict, gives a good overview, meaningful examples, and mentions when other dialect's of LISP may do things differently. LISPcraft is based on Franz LISP, and since Franz is probably the most widly used LISP it is a good choice to get started. Gerard Mayer Raytheon Research Division uucp ..linus!raybed2!gxm
neves@uwai.UUCP (06/03/85)
> >For example when they discuss property lists they mention how to get > >values off the plist (with get) but they do not mention the function to > >put properties on the property list (put). Instead they use a macro > >(setf) which is used to set other things as well. > > > >wisc-ai!neves (David Neves) > Common Lisp doesn't have a "put" or "putprop" function. The only way to > put items on the property list in Common Lisp is with "setf". > ... > By the way, I don't think "setf" is a macro in CL (it is a macro in > Maclisp and Zetalisp). If it were, then there would have to be a "put" > or "putprop" for it to expand into in the above use. ... I have a prepublication version of the Steele book so I apologize if I gave out some incorrect information above about putprop. However, my copy says that setf is a macro and that there is a function "putpr" which places information on the property list. I would hope that setf is not a special form replacing array/property list functions because this would introduce some inefficiency, wouldn't it? If this information is incorrect please correct me. -- David Neves Computer Sciences Department University of Wisconsin-Madison Usenet: {allegra,heurikon,ihnp4,seismo,uwm-evax}!uwvax!neves Arpanet: neves@uwvax
shebs@utah-cs.UUCP (Stanley Shebs) (06/03/85)
In article <4384@mit-eddie.UUCP> barmar@mit-eddie.UUCP (Barry Margolin) writes: >Common Lisp doesn't have a "put" or "putprop" function. The only way to >put items on the property list in Common Lisp is with "setf". The correct way to say this is that the language standard doesn't define the function. However, most (if not all) CL implementations have a "put" function, and go to various lengths to make it less visible. Usually, a determined user could still get to it; but then of course a program using the function would not be portable CL. >By the way, I don't think "setf" is a macro in CL (it is a macro in >Maclisp and Zetalisp). "Setf" is a macro in CL also. stan shebs