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

meaning of *global* define

    What is the difference between having incorrect procedures all over
    the place and having incorrect numbers, lists, strings, or vectors all
    over the place?

It would be possible to fix other objects if in our system all objects
maintained a history of how they were created, and often I think that
this would be a very nice debugging environment.  Unfortunately, for
efficiency reasons, they do not.  Procedures, fortunately, contain the
environments where they are closed, and these include most of the
relevant information about their creation history.  By modifying these
environments we can patch a running system in a way we cannot patch it
if the "wrong value" happens to be a vector or other "simple" data
structure.  Just because we cannot provide a more general and powerful
debugging tool, it does not mean that we should not provide an
extremely useful (the most useful to me) special case.

In terms of implementation, there are various possible trade offs.  I
can easily accept a system where incremental definition (when it does
not degenerate into assignment) causes a garbage-collection-like
process to occur to make all the references consistent.  I am
perfectly willing to pay the price of a very powerful feature which I
use relatively often.

PS: Sorry about taking so long to answer this message.  It was buried
in a large pile.