[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Clarification on named let



I guess there is a general confusion about why "let" as it is currently
defined is irrational and unbecoming a language which has taken great
pains to be as clear and simple as possible.  For those who may have
forgotten, (let name ((i e) ...) b ...) cannot be rewriten with rec
because rec is not part of the rrrs language.  So, the rewriting of
named let generally takes the form of (letrec ((name (lambda (i ...) b ...)))
(name e ...)).  This is a complicated macro even with a tool like
extend-syntax.  We are talking about freshman where the requirements to
enter a state supported school are well below those of most private schools.
When you think about what simple-minded tools we've had to teach over
the last few decades, it is such a breath of fresh air to teach something
as beuatiful and elegant as Scheme.  However, the overloading of the syntax
of let is a mistake and our students, and I personally, find it abhorent.
Now what choice have you left the writers of the books who help make Scheme
a household word by encouraging the teachers throughout the world that
this stuff is indeed teachable and definitely worth knowing.  This is
our decision:  Since our sensibilites as well as our students comprehension
suffer greatly, we have opted for always using letrec.  This is painful
because that requires more than is generally necessary.  Why are we stuck
like that?  Well you see there is no macro mechanism and likely there
won't be one before our book gets out and since we wish to stay within
the bounds of the standard, we have been left with no choice.  I find the
behavior of the community incomprehensible in its insistence on staying with
a dreadful mistake.  Bright people never have difficulty with bizarre
nuances in languages.  Look at unix, for example, or worse yet, tex.
But that is not the audience we are dealing with.  We have a nice, clean
simple tool except for named let and we only need a consensus for a new
name in order to express programs in the appropriate style for freshmen.
I enjoyed reading the rationale by Pavel concerning why he did not like
my suggestion of "bindlet".  I agree with him that "bindlet" is a
bad name and that is why I did not suggest it.  I proposed bindrec, which
I still like and which I believe satisfies all of the criteria that have
been enunciated.

... George Springer