This page is part of the web mail archives of SRFI 72 from before July 7th, 2015. The new archives for SRFI 72 contain all messages, not just those from before July 7th, 2015.
I don't know if this is a big deal, but it breaks pair identity in cases where it is preserved in existing implementations. This seems to make SRFI-72 essentially incompatible with SRFI-38, in the sense that you can't use of SRFI-38 shared structure in programs (though it is still available for external data). And of course cycles are prohibited.
A solution might be something like the following: when creating a syntax object from a pair or vector, enter both the original pair/vector and the corresponding syntax pair/vector in a table. (If the original pair/vector exists in the table, re-use the syntax pair/vector.) Then quote and related forms (e.g. syntax->datum) does the inverse mapping.
Of course for this to be efficient, you probably need a (non-portable) object hash table, though various tricks are possible.
-- --Per Bothner per@xxxxxxxxxxx http://per.bothner.com/