SRFI 31 procedure vs. named-lambda (2)
Chris Hanson 31 May 2002 12:52 UTC
Date: Fri, 31 May 2002 11:38:47 +0200
From: "Dr. M. Luedde" <xxxxxx@Computer.Org>
My point of view by now is the following.
- MIT Scheme's `named-lambda' does not provide what SRFI-31 is
looking for and it does so by will, not by accident.
Actually, it used to. But we changed it long ago as it was believed
to be confusing.
- R2RS Scheme's `named-lambda' probably didn't either.
R2RS defined NAMED-LAMBDA to bind its name as a recursive reference to
the procedure:
http://www.swiss.ai.mit.edu/ftpdir/scheme-mail/HTML/rrrs-1984/msg00013.html
And even if it did, it's not in the Reports anymore for
minimalistic reasons.
There was a great deal of discussion of this point, which led to the
decision to drop NAMED-LAMBDA and REC from R3RS. It wasn't purely on
the grounds of minimalism. See the archives at
http://www.swiss.ai.mit.edu/ftpdir/scheme-mail/HTML/rrrs-1986/threads.html
In our case this sort of minimalism (which cannot be the
ultimate goal anyway) contradicts another important principle,
namely that of separation of concerns - stateless vs. imperative
programming.
I'm not sure how this factors into it. You can always use LETREC to
achieve the same result, and it's stateless.
In conclusion I believe that `procedure' fills in a gap that obviously
exists at present and it does neither contradict any of Scheme's
principles, nor any previous decisions of Scheme's designers and
implementors.
Interestingly, there was a proposal during the 1986 discussions to
rename REC as PROCEDURE. This was shot down for a variety of reasons.