[net.lang.lisp] Responses to: "LISP" by Winston & Horn: is the 2nd Edition better?

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