In syntax parse the racket code stores syntax values inside structs and then transport them
down the macro chain as argument to macros. Then when unpacking the struct they are compared
with arguments of syntax values. I think that this is the reason. I tried to experiment with
psyntax macro expander to poke inside structs and that solved this issue. But on the other hand
even worse problem appeared.

What I did now was to manually clean the syntax values e.g. remove #f and shift from the
syntax value and this gave the best result.

As you see, it's just wild west to get the racket code working.

Mayby just writing a version from scratch would be better.

/Stefan

On Mon, Jan 16, 2012 at 10:28 PM, Andy Wingo <wingo@pobox.com> wrote:
On Mon 16 Jan 2012 20:46, Stefan Israelsson Tampe <stefan.itampe@gmail.com> writes:

> why are these two not equal in the sense of bound-identifier=?
>
> #(syntax-object x ((top) #(ribcage () () ()) #(ribcage () () ()) #(ribcage #(x) #((m1104 top)) #("i1105"))) (hygiene guile-user))
> #(syntax-object x ((#f top) shift #(ribcage () () ()) #(ribcage #(x) #((m1104 top)) #("i1105"))) (hygiene guile-user)))

One has been anti-marked and the other has not?  Meaning that one was
made up by your syntax expander, and the other and the other came in as
part of the form.

But that's not the right question or answer.  Can you should where these
identifiers come from?

Andy
--
http://wingolog.org/