[plt-scheme] to define, or to let

From: Eli Barzilay (eli at barzilay.org)
Date: Sat Mar 20 23:16:45 EST 2004

On Mar 20, Richard Cleis wrote:
> I am not complaining about letrec, I was just responding.  I use
> let* for this sort of thing anyway, and now I know why.  Is that
> dangerous?

No.  But using letrec is not dangerous too.  It would be stylistically
bad, but not dangerous since it is documented & intentional.  It is
true that MzScheme might change tomorrow and throw an error in those
cases because someone achieved (a new) enlightening, but the same
argument holds for dropping any MzScheme development tomorrow, and
switching to MzPerl.

BTW, this dependency *is* useful in cases where you want to write one
big function that encapsulates lots of smaller definitions:

  (define (foo ...)
    (define a ...)
    (define (bar x) ...)
    (define b (bar a))

I believe that trying to make local environments be a little more like
the global environment is the main reason for this extension.

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                  http://www.barzilay.org/                 Maze is Life!

Posted on the users mailing list.