Hacker News new | ask | show | jobs
by zelphirkalt 1039 days ago
While reading I had a thought:

What if they (whoever it is, who could or should do this) worked on a proposal, that specifies, how language features should be added to the language? I mean, there are things like continuations and macros. Those need to be really solid. But based on them, could one not make everything else an optional addition, implemented on top of them, instead of in a dialect's core? So that Schemes could all go for R7RS small (except those that object to things in it) and then basically have a "folder" in their sources of things that are additionally necessary to have R7RS large things? Those things being implemented in the way that the standard proposes? Then we could get to a R7RS large step by step, feature by feature.

I guess this depends on whether things in R7RS large are at their core incompatible with how R7RS small works. Probably it also depends on those dialects implementing the standards correctly for the primitives, that the extension mechanism is supposed to be based on.

I also don't know enough to tell what attempts have already been made to resolve things, so perhaps someone already had this idea and it does not work.

1 comments

Alas, no. There are quite a few other things that are needed in what is now being called the Foundations in order for adding features to be done through libraries. Scheme, like other Lisps, is almost all "library" and very little "language", once you get past variables, constants, and function/macro calls. The only "language" feature added so far (in R7RS-small) is that previously a vector constant had to be quoted, whereas now it is self-evaluating: you used to have to say (vector-ref '#(a b c) 0), whereas now you can leave out the quote mark.