[plt-scheme] metaphors for local
On Nov 5, 2007, at 5:08 PM, Prabhakar Ragde wrote:
> I'm enjoying these metaphors for closures. But while we are at it,
> the instructors for the HtDP-based course I designed but am not
> teaching this term are wondering about metaphors for local. They
> want something akin to the stack of books on one's desk, or the
> cache of library books on one's shelf. One of them suggested a
> fresh piece of paper for local definitions which gets ripped up
> (recycled?) after the body is evaluated, but I said, hmmm, you have
> to be careful or you get dynamic scope, not lexical scope. So, does
> anyone have any ideas? --PR
Most of what you have mentioned is flawed. Indeed, I watched a famous
compiler writer give my lectures at Rice and getting this wrong. When
the body of a local returns a value that refers to a local definition
you're hosed with stacks, temporary write ups, etc:
(define-struct foo (bar moe))
(local ((define x (make-foo 0 #f))
(define f ...)
(make-foo x f))
Now think: f = (lambda () (set! x (+ x 1)) x)
;; ---
I recommend to think of a pile of papers except that every programmer
has his own secret ink with which to definitions that only he can
read. Don't ever throw any of these papers away! You might need them.
-- Matthias