[racket] copy syntax properties

From: Jon Rafkind (rafkind at cs.utah.edu)
Date: Wed Feb 15 15:28:54 EST 2012

`datum->syntax' does not copy syntax properties from the 4th parameter to the new syntax object if the 2nd parameter is already a syntax object. What is the reasoning for this? Lexical context and source location are taken from the 1st and 3rd arguments so it seems inconsistent for syntax properties not to act the same way. I don't really have an opinion as to whether the new syntax object should combine syntax properties from the 2nd and 4th argument or if only the properties from the 4th should be used.

Perhaps the API for `datum->syntax' could change slightly so that a list of syntax objects can be used to provide syntax properties.

(datum->syntax lexical original source (list a b c)) ;; would create a new syntax object with syntax properties from 'a', 'b', and 'c'.

This way the original syntax object can be put into the list to retain its properties.

(datum->syntax lexical original source (list original a b c))

Posted on the users mailing list.