[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

self-reference and DEFINE

I agree with the people who aren't ecstatic about the implicit
self-reference of (DEFINE (FOO BAR BAZ) ...) -- mainly because of the
fact that it works smoothly for recursive definitions but not for
mutually recursive ones, as pointed out by Adams at Tektronix, but also
because of the introduction of gratuitous hidden stuff.  Too many times,
I've seen people who thought they understood the simple Scheme model of
environments (and did!) confuse themselves by trying experiments where
they rebind a function name and then wonder why the re-binding didn't
"take" in all the places they would have expected.  It is then necessary
to explain that reality is a little more complicated, and that their
experiment didn't work because of some nice things Scheme is trying to
do for you without telling you.

I also doubt that as a practical, software engineering matter, in the
hands of experienced users, it matters very much whether DEFINE does its
special self-referential legerdemain or not!  But I've never been able
to change any minds with these arguments, and I wonder whether we should
be trying to change this aspect of the MIT Scheme design at this point
in the game.							-Bert