On Fri, May 20, 2011 at 6:21 PM, Matthias Felleisen <matth...@ccs.neu.edu> wrote: > > On May 20, 2011, at 7:17 PM, Matthew Flatt wrote: > >> I see no reason to change `letrec'. > > I think letrec's behavior with call/cc on the right-hand side exposes ref > cells and that will bite us again and again. That's why I think changing it > would make sense. Then again, the bites are rare, subtle, and probably barely > noticable in most cases.
To solve this problem, we could consider having #lang racket's letrec be different than #lang scheme's or the internal, result-of-expander one. We do this already for lambda (well, #lang racket/scheme's lambda is different than the fully expanded one) so the confusion that results when people write programs that process fully expanded source is already there. And I expect that few people actually write programs that rely on the "I can grab a box" (unless they are solving that puzzle :) so maybe it is okay to change the language to avoid these problems? Robby _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev