[plt-scheme] The perfect teaching language--Is this too much to ask for?

From: Shriram Krishnamurthi (sk at cs.brown.edu)
Date: Sun Jun 14 13:24:13 EDT 2009

My talk was meant to be at least partially rhetorical, and those
bullets were not meant to be taken *too* seriously.

I don't think you can apply glib arguments like Don Norman's to a
situation complicated like language syntax.  First of all, Python too
has various similarities (good heavens, it uses ASCII syntax for
*everything*); second, Scheme has only a few concepts; third, your
argument is sort of bogus, because

  (x y z)

cannot be a macro unless you've defined `x' to be a macro keyword.
There are no "higher-order" macros, so if it's a macro, it has to be
the name of a macro keyword, nothing else.  This is why, fourth, this
is virtually never a problem in practice.  People program in a
well-subscribed (super)set of Scheme, and that's that.  In PLT, we
make this (super)set completely explicit with the #lang qualifier.

It is true that if you don't know what macros are operational, you can
be in some trouble.  If you're in DrScheme, this problem goes away.

> Probably there have been worthwhile discussions of this in the past.

Not to be too cynical, but precisely this discussion happens on some
parenthetical list or the other about once every two years.  In
response, I feel there should be a new kind of FAQ called a FooAQ.  In
a FooAQ, you only list the (frequent) questions.  The response is
always the same: "Foo".  Meaning, "We've had this debate for decades,
and nobody has resolved anything because everyone (eventually)
understands the trade-offs".  (Yes, "Foo" is a macro.)


Posted on the users mailing list.