On Thu, Aug 19, 2010 at 6:40 PM, Taylor R Campbell <[email protected]> wrote:
>
> I think the problem is that update_cache_references and the associated
> routines don't take the name of the binding involved, causing them to
> update references that they shouldn't update, because they were to
> different names.

I'm not sure that the name is supposed to be taken into account.  When
LINK-VARIABLES is called, it irrevocably causes the first variable to be
an alias for the second.

When the (runtime miscellaneous-global) package is loaded, REFERENCE-BARRIER
is exported as an alias to IDENTITY-PROCEDURE, as we can see in this
nasty bit of code:

1 ]=> (fluid-let ((identity-procedure 'woohoo)) reference-barrier)

;Value: woohoo

1 ]=> (fluid-let ((reference-barrier 'yow)) identity-procedure)

;Value: yow

I think the behavior you are seeing is the expected one.  You probably
don't want to
alias the two variables but simply initialize REFERENCE-BARRIER to
IDENTITY-PROCEDURE.


-- 
~jrm

_______________________________________________
MIT-Scheme-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/mit-scheme-devel

Reply via email to