This page is part of the web mail archives of SRFI 93 from before July 7th, 2015. The new archives for SRFI 93 contain all messages, not just those from before July 7th, 2015.
> The specification says that datum->syntax takes an arbitrary value as second > argument. Is it meaningful for this argument to be already a syntax object > and, if so, what happens to its wrap? Actually, the description says that the second argument is "an arbitrary value 'datum'", which is nonsense. It should say, simply, that the second argument is a datum. A datum is something that can be derived from the datum syntax. Since syntax objects cannot be derived from the datum syntax, the problem doesn't arise in correct code. In Chez Scheme, and in the SRFI 93 reference implementation, if you pass in a syntax object, the syntax object is treated as a constant; it's wrap is not comingled in any way with the wraps layered over it. At the base of each complete wrap, there's a "top mark" that identifies the base, and the system treats anything below a top-marked wrap as constant data. This allows it to avoid traversing constants, including cyclic constants and constants containing syntax objects. I doubt this will be prescribed behavior, however. Kent