This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Source for wiki MinimalSyntaxCaseCowan version 1

author

cowan

comment


    

ipnr

198.185.18.207

name

MinimalSyntaxCaseCowan

readonly

0

text

From [http://tmp.barzilay.org/foof.txt Eli Barzilay's posting], lightly edited for continuity:

The "minimal API" of a ''syntax-case'' system is made of `syntax-case`, `syntax`, `syntax->datum`, and `datum->syntax`.

With `syntax-case` it is extremely straightforward to create something like `syntax-e` if it's not built in -- and `syntax-case` itself is then ''no longer necessary''; `syntax->datum` can be done in exactly the same way (applied recursively), so it's just a convenience.  This leaves you with two things: `syntax` as a core lexical-scope-preserving quotation notation, and `datum->syntax` as a way to construct new identifiers unhygienically.  `Datum->syntax` is therefore the only real "complex API" here, and it's complexity is (very unsurprisingly) very similar to explicit renaming or syntactic closures, since in all three cases you take a symbol and choose a lexical scope to put it in.

[Is this really sufficient?]

time

2012-06-09 04:05:36

version

1