On Thu, 2008-07-17 at 17:19 -0400, Swaroop Sridhar wrote: > > Good! How much problem do you anticipate with implementing the > > change? :-) > > This is not hard to implement, but re-writing the > (define (f x) <body>) as > > (define f (letrec ((f (lambda (x) <body>))) f)) > > where body actually uses `f' will introduce closure construction for the > lambda being bound, since the lambda is now capturing a non-global > non-local variable `f'. > > I guess we can recognize this case by hand, but I wanted to note the > issue.
Don't we already recognize self-recursion as a special case? In any case, the rewrite specification was intended as a specification of semantics, not a specification of the intended implementation. This definitely should NOT induce a closure construction. I tend to think that we should handle (recognize) the self-binding case specially in any case. shap _______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
