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

named let -> ???



>Date: Wed, 24 Aug 88 19:38:52 EST
>From: "R. Kent Dybvig" <dyb@iuvax.cs.indiana.edu>
> [...]
>The use of "let" with a special syntax has proven to cause problems
>for us in teaching Scheme at the introductory level, and it also makes
>it more difficult to scan a program for its control structures.  We
>have found that students have trouble understanding the similarities
>between "let" and named "let"; we had no such trouble with "recur".
>
>While I certainly prefer the name "recur" to either "reclet" or named
>"let", I understand that some people do not like the name "recur",
>because it implies that the construct is used solely for recursion
>(the fact that iteration is a special case of recursion notwithstanding).
>I suppose they will dislike "reclet" for the same reason, but if not,
>I would be happier with "reclet" than with named "let".

I hope you weren't thinking of me when you mentioned "some people,"
since I don't deny that giving the LET a name only makes sense if
recursion is going to take place.  However, I do have two objections
to the name RECUR.

(1) Named LET is both a binding construct and a control construct (and
thus is similar to LAMBDA).  As you are reading along in the program,
the first action is to bind some variables and start executing a body,
just like LET.  Thus, I see it as a binding construct primarily, and a
control construct secondarily.  (Incidentally, this is why I preferred
the keyword LABEL over REC back when that construct existed.)

(2) I associate the verb "recur" with the action of calling a
procedure recursively, not with the action of creating the procedure
to be called.  Putting the keyword RECUR in place of LET is like
putting the word GOTO in front of every labelled Fortran statement.

I'll be happy with any choice of a keyword that doesn't overly
de-emphasize the binding aspects of the construct and doesn't misplace
a perfectly good verb.  LET suits me just fine.

--db--