[plt-scheme] syntax-object comparison

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Fri May 7 16:09:32 EDT 2004

At Fri, 7 May 2004 15:25:41 -0400, Doug Orleans wrote:
> Thanks, that does give me some clues.  I'm still trying to wrap my
> head around the reasons for the differences, and which ones I need to
> use in which situations, but I think I'm starting to figure it out.
> 
> It appears that `bound-identifier=?' implies `free-identifier=?'
> implies `module-identifier=?'.

Yes.

(I don't think that `free-identifier=?' is ever useful. It exists only
for a kind of compatibility with the original `syntax-case'
implementation. But there are so many other incompatibilities that it's
probably not worthwhile.)

>  The hierarchy seems to be:
> 
>   `free-identifier=?' is like `bound-identifier=?' except it also
>   works for variables that have no binding.  (or are bound at the top
>   level?)

No, it's about macro-introductions and future potential bindings, not
existing bindings.

Unlike `bound-identifier=?', `free-identifier=?' doesn't detect that
one identifier might not capture the other because it was introduced by
a macro expansion.

>   `module-identifier=?' is like `free-identifier=?' except it also
>   knows about module renaming.

Yes.

Matthew



Posted on the users mailing list.