[plt-scheme] Intro to FP book
Hi,
I read it, may be more than 15 years ago. My humble opion that follows pertains
to the edition of 1989. May be the book has been adapted in the mean time.
Whether or not it is a good book depends on your goals. It treats some very
basic stuff on Lambda Calculus in a very easy to grasp way, but not very
thorough. It mentions the second Church-Rosser theorem and one of the
undecidibility theorems very briefly without any hint on why these theorems must
be true. Reading a few chapters may be useful as a short intro before reading a
more thorough treatment of Lambda Calculus. In this sense it did make it easier
for me to read Barendregt. As an introduction to functional PROGRAMMING the book
fails its goal, I think. 15 years ago the book did not come with tools to
actually enter the examples in an interpreter. It provides short overviews of
ML, LISP and Scheme, but only to conclude that after evaluating an example, the
result wont show a normal form nor much other information. For example in
Scheme:
((lambda (x) x) (lambda (x) x)) --> #<procedure>, whereas the reader would want
to see the normal form (lambda (x) x)
A good thing is that the book gives in very simple words some insight in the
process of evaluation and recursion by 'manually', i.e. with pencil and paper,
going through some evaluations. The book also provides some insight on how it is
possible that a 'simple' theory as Lambda Calculus can be used as fundament for
the study of the properties of 'real' programming languages. It does treat
normal order (lazy) and applicative order (eager) evaluation and does show how
recursion is constructed in Lambda Calculus. It also shows how higher
syntactical layers can be build. If I remember well, it does not show how things
like continuations and assignments can be described in terms of Lambda Calculus.
For someone who wants to learn functional programming, better books are
available I think. May be nowadays the book comes with software for reduction of
lambda terms such as to produce normal forms. That would be an important
improvement allowing the reader to do some more experiments than possible with
paper and pencil only. But on the other hand the absence of this tool may have
the benefit of forcing the reader to do the most essential evaluations all by
himself with pen and paper.
Jos Koot
((((lambda(x)((((((x x)x)x)x)x)x))
(lambda(x)(lambda(y)(x(x y)))))
(lambda(x)(write x)x))
'greeting)
----- Original Message -----
From: "Grant Rettke" <grettke at acm.org>
To: "PLT Scheme Mailing List" <plt-scheme at list.cs.brown.edu>
Sent: Wednesday, September 19, 2007 4:30 AM
Subject: [plt-scheme] Intro to FP book
> Would anyone who has read this please share their comments on it?
>
> http://www.amazon.com/Introduction-Functional-Programming-Calculus-International/dp/0201178125/ref=sr_1_1/002-4028090-2487233?ie=UTF8&s=books&qid=1190168892&sr=1-1
>
> I heard it is pretty good.
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>