Rationale: <standard-Clingerism>
Scheme is a family of language designs attempting to realize the above "Clinger ideal" for concrete programming. Like most families, there is a lot of in-fighting, back-stabbing, sulking, skulking, and outright thumping while Mom's not looking. But there is a similarity that runs deeper than surface syntax or the libraries chosen. This document is an attempt to expose Scheme's common genetic heritage - without getting into the details of our private parts. Given the fractious nature of the community it seems only appropriate that Thing Zero itself has two genders: Thing0-Family (Mother Scheme) and Thing0-Strict (Father Scheme). Thing0-Family: A programming language that: Gene 1 - uses fully parenthesized prefix notation Gene 2 - doesn't punish programmers for writing infinitely deep recursions if it can be helped Gene 3 - provides first-class and higher-order functions Gene 4 - provides a universal union type with predicates to distinguish types at run-time Gene 5 - is lexically scoped shall be considered a sufficiently conformant to Thing0-family to not need an invitation to sleep over. Certain languages that have mutations of Gene1 are clearly such close cousins that they are welcome to show up for dinner unannounced. There is a puritanical branch of the family that has some mutations to Gene 4 as well, but they tend to shun Thing0-Family events unless they look like too much fun is happening to stay away. Thing0-Strict: A programming language that is definitely a member of Thing0-Family but also: Gene 6 - provides full TCO and is safe-for-space Gene 7 - uses a call-by-value evaluation strategy Gene 8 - provides macro-programming facilities based on program structure Gene 9 - is able to reify continuations Gene 10 - provides a syntax for aggregate data shall be considered sufficiently conformant to Thing0-Strict to not get lectured about tucking in its shirt before going out in public. Thing0-Strict family members are expected to be able to help out around the place, especially when it comes to the care and feeding of undergrads. Thing0-Strict family members that provide a decent numeric implementation will be allowed the intoxicating beverage of their choice with dinner. Coda: While this document is presented with a light tone, it is also quite serious. Thing0-Strict would make a good starting point for Thing1, which would ideally *be no larger* than R4RS. The Thing0 specifications are intended to acknowledge the community's debt to the important, if idiosyncratic implementations of the past while providing much needed room for experimentation in the future. david rush -- GPG Public key at http://cyber-rush.org/drr/gpg-public-key.txt _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
