Liam,
I read it last night and I think I understood it then.
I am too tired
to try to go through it again now but I will tomorrow and see if it
sinks in. :?)
I hope it does, but if not there are more ways to explain this stuff.
A thousand thanks (as they say in Scandinavia).
Thanks to everyone who has said kind words about this little text.
I would like to stress something that I said the first time. Lambda
expressions, closures, continuations (another interesting idea, but
let's not go there now) and macros are nice features that make Scheme a
kind of language construction set. None of this is interesting to the
novice programmer. Where it starts to become interesting is when you
have covered "normal" programming in Scheme and are interested in
digging deeper. Then you first find that some things you have been using
are actually built out of this stuff and you can create your own
variations. Later you can use this to add stuff to understand it. For
example: Ada has an interesting concurrency model while Occam and Erlang
have different ones. Wouldn't it be nice to be able to see all three
side by side in the same language? Using Scheme's building blocks, you
can!
It is great in physics that we can understand thousands of different
materials in terms of combinations of a few hundred kinds of atoms, then
understand all these atoms in terms of combinations of electrons,
protons and neutrons and later unify them all in terms of combinations
of quarks. But it is best to learn them in this order, even though in
theory the quarks are the simplest. Anyone who gets really excited about
finally "getting" the building blocks of Scheme and want to rush out and
point them out to those who are starting out is making a big mistake.
-- Jecel