[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Reference implementation's use of datum->syntax is not portable
On Tue, 12 Aug 2008, William D Clinger wrote:
Derick Eddington wrote:
The syntax object #'define-record-type-helper in the
below makes the list not be a datum value. This prevents
the reference implementation from working in PLT Scheme
and Ikarus.
Sorry about that. A corrected reference implementation,
with the naming convention proposed by the current draft
SRFI 97, is online at
http://www.ccs.neu.edu/home/will/R6RS/srfi-99.sps
Just a little note regarding correctness of the implementation. The snippet
(datum->syntax
#'tname
`(,type-name ,fields ,parent
,(if constructor-args
(list constructor-name constructor-args)
constructor-name)
,predicate-name
,accessor-fields ,mutator-fields))))))
is hygienically incorrect. If the constructor, predicate,
accessor or mutator names are /not/ omitted by the user, they should not be
stripped of their color as the above snippet does. After all, two of these
names may be symbolically the same but have different colors, which would be
lost with the above implementation. What the above
macro does would be analogous to a LET macro that gives all the left hand side
variables the same color context as the LET keyword, forgetting their
colors, which would be incorrect.
Andre