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

SRFI 31 procedure vs. named-lambda (2)



   Date: Fri, 31 May 2002 11:38:47 +0200
   From: "Dr. M. Luedde" <Mirko.Luedde@xxxxxxxxxxxx>

   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.