Daniel Villeneuve scripsit:
> Well, as for #,(foo 2012-05-11), #foo 2012-05-11 implies that the
> reader scan and tokenize 2012-05-11 before passing it to the "foo"
> (or "lexical-foo") macro handler.
Yes, you'd need #,(foo "2012-05-11) or under my proposal #foo"2012-05-11".
> I don't see how dates, for example,
> could be made to look like first-class objects with this approach.
It depends on how you think of it. Does #(foo bar baz) or #u8(12 20 42)
look first-class to you?
> Also, the "only works in code" part breaks the property that code is
> a subset of data (unlike the lexcial extensions I am using).
That's true. You can't have everything.
> Since the number of extensions used over the past years has been
> quite limited (mainly: dates, times, XML fragments), maybe the
> easiest way to correctly integrate these with libraries and
> environments is to forget about the dynamic nature of this
> experiment and bury the useful extensions in the core interpreter
> (as with extensions about admissible symbols, for instance).
That's reasonable. Over the whole of Scheme, there are a *lot* of
lexical syntax extensions that have been used at one time or another:
square brackets, the syntax-case extensions #' #` #, #,@, #s8 #u16
#s16 etc. for specialized vectors, #nA for n-dimensional arrays, #*
for bitstrings, #: and : (prefix or postfix) for keywords, #+ and #-
for read-time conditionalization, #, for SRFI-10, DSSSL extended lambda
syntax, #!eof to fake an EOF object, #& for initialized boxes, #" for
strings allowing interpolation, #r for arbitrary number radices, #[
for records, ....
--
You escaped them by the will-death John Cowan
and the Way of the Black Wheel. cowan@ccil.org
I could not. --Great-Souled Sam http://www.ccil.org/~cowan
_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports