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

named let again



I think I have figured out just why I do not like named "let", though I
am sure others are bound to disagree with my reasoning.  It has to do
with abstraction.  To wit, the "just giving a name to one more piece of
the transformation" argument does not work if you are trying to look at
things abstractly.  Once we understand that "let" is shorthand for
direct application of "lambda", we forget it, and rightly so.  "let"
expresses the local binding of variables to values, and the fact that
the local binding is accomplished by direct application of a "lambda"
expression is irrelevant.  For the same reason, David Bartley's
argument in favor of named "let" is not persuasive, since local binding
is not the same thing as looping or recurring.  In naming something, we
should consider what it expresses rather than how it works.  That is
why I like the name "recur", and I think David's argument against it is
weak.  If you look at how the construct works, i.e., by creating a
procedure and invoking it, then "recur" does not make sense.  But if
you look at what it expresses, i.e., a loop or recurrence, then "recur"
does make sense.  Perhaps the name "recurrence" would make slightly
more sense than "recur" if it were not twice as long as "recur".

I am willing to go along with Gerry's suggestion and add "recur" to the
report as optional syntax.  We can put both forms of "let" together
where the unnamed form is now and say that the named form of "let" is
the same as "recur".  "recur" would be described where the named form
of "let" is currently.

Kent