Subject: Re: Dr. Scheme "local"?
From: rpw3@rigden.engr.sgi.com (Rob Warnock)
Date: 2000/06/20
Newsgroups: comp.lang.scheme
Message-ID: <8imsfh$la3r$1@fido.engr.sgi.com>
felix <felix@anu.ie> wrote:
+---------------
| Shriram Krishnamurthi wrote in message ...
| >let* doesn't create recursive bindings, whereas local does:
| >... That's a pretty significant (and useful) difference.
| 
| Sorry, but isn't that what 'letrec' is for? :-)
+---------------

Yes, but... Letrec *doesn't* provide for sequential assignment like let*,
so what do you do when you need *both*? One answer: Use nested "letrec"s.
But that doesn't provide *mutual* recursion.

Another answer: Use MzScheme's "letrec*-values" (which is not in R5RS, of
course), which is what I'm guessing their "local" maps into at some level:

	In a letrec*-values expression, the scope of the variables
	of each clause includes all of the binding clauses. The clause
	expressions are evaluated and bound to variables sequentially.


-Rob

-----
Rob Warnock, 41L-955		rpw3@sgi.com
Applied Networking		http://reality.sgi.com/rpw3/
Silicon Graphics, Inc.		Phone: 650-933-1673
1600 Amphitheatre Pkwy.		PP-ASEL-IA
Mountain View, CA  94043