Peter Bex scripsit: > I'm not sure. It appears to be one of those typical "historically > grown" things. The DSSSL standard contains *some* documentation > for them, but it boils down to "they're almost like symbols, except > self-evaluating" :)
They also mean the same thing everywhere: they cannot be lexically bound. Chicken doesn't complain if you try, but the binding has no effect: (let ((foo: 32) foo:) => foo:. That adds convenience. > I found a copy of the DSSSL draft here: > ftp://sunsite.unc.edu/pub/sun-info/standards/dsssl/draft/ The DSSSSL expression language (the part that's like Scheme) is available in plain HTML at http://www.ccil.org/~cowan/dsssl , and there's a summary (written by me, may contain errors) of the differences between the expression language and Scheme at http://trac.sacrideo.us/wg/wiki/DSSSLVsScheme . > > Could we do away with them? > I think we'll finally see a proper rigorous treatment of keywords when > the RnRS process decides to take it upon them to standardize them ;) There's a proposal for keyword arguments (not keywords as such) at http://trac.sacrideo.us/wg/wiki/KeywordArgumentsArcfide . This implementation uses only syntax-rules, and doesn't require changing the reader; it binds keywords to keyword objects, which contain their names and are equal if the names are equal. In this proposal, the use of colons is just a convention, not an implementation requirement. However, you need to export keyword names from a module explicitly, since they are identifiers. -- There are three kinds of people in the world: John Cowan those who can count, [email protected] and those who can't. _______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
