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.

Ticket 517: The draft doesn't support user extensibility

2013-07-07 03:20:44
WG1 - Core
2013-05-13 09:05:34

Aaron Hsu writes:

The WG1, by this standard, would seem to have no conception of user extensibility. Indeed, IMO, the entire point of Scheme is that the user is as capable of language design as the systems implementer, and that, indeed, there is no distinction between the two but in name. The idea of their being system extensions and user extensions is a fundamentally anti-Scheme way of thinking. The Scheme language itself is supposed to allow the user to extend the system in powerful ways, and Scheme has been moving in this direction more and more. Real Scheme systems exist that allow the user to create their own workable library systems extensions, or to really do conditional expand-time expansion without requiring system extensions for feature symbols. All of this can be done programmatically and using no more than the constructs provided by R6RS.

First of all, it is a gross exaggeration to say there is no user extensibility. Scheme's combination of procedural and syntactic abstraction provides more extensibility than almost any other language. (Common Lisp does that too, but its style of doing so is subtly but crucially different.)

The module system is the largest mandatory extension to R5RS. Keeping it simple and static rather than allowing greater generality seemed to the WG to be the appropriate tradeoff between flexibility and ease of use and implementation. Not everything in Scheme is designed for maximal flexibility. It's true that R6RS provides more tools than R7RS-small, but at the expense of not being a small language. Providing a modest fixed point in the form of a static library system is what keeps the language small.


The WG decided by unanimous consent to take no action on this ticket.