R7RS-large backward compatibility Lassi Kortela 03 Mar 2020 10:31 UTC
> Since 177 needs to be usable immediately, it can't rely on new > kinds of macros. That means > 177 should probably specify lambda/kw to return real lambdas. > > Now we have returned to the argument that, from a technical point of > view, we seem to be specifying things in the wrong order. SRFI 177 is > shaped by what is possible today. When SRFI 177 gets voted into > R7RS-large, by the end of the day, it should be shaped by what is > possible in R7RS-large. :( Speaking specifically of 177, it was never meant to be R7RS-large only. Its purpose is to be equally usable in R5RS, R6RS, R7RS-small and R7RS-large Schemes. My overarching interest in Scheme is to make standards and implementations compatible; I'm fine with a technically inferior solution if it can cover more Scheme implementations. Against that backdrop, a hack like parsing symbols is a very minor issue. I agree that it's better to do without, and I will fully support any efforts to explore how to get rid of hacks, but compatibility wins easily for me. Lisp is infamous for splintering into mutually incompatible camps on technical grounds. Lisp outsiders, who evaluate whether to use a Lisp dialect to write an application, will not listen to debates like that. Last year I tried in earnest to use OCaml, but was stumped that it has two completely different standard libraries. We can start from the assumption that each division between two standards divides the language's community in half, and additionally cuts off at least half of new people evaluating whether to learn the language. Scheme is better off than OCaml due to the wise decision that R6RS and R7RS are made largely out of the same parts, so it doesn't present as big a hurdle as OCaml and a lot of code is directly portable. What I'm saying is that we are digging ourselves deeper into obscurity with each new incompatible feature. Wearing one's R6RS or R7RS adherence as a badge of pride is short-sighted zero-sum thinking. To the rest of the programming world it looks like kids arguing in a schoolyard about whose toy is cooler. Even though Scheme is legitimately one of the coolest toys ever, it's time to venture outside the schoolyard and make something that the wider world can easily use for big projects with deadlines :) I got the impression that this is the main point of the R7RS-large project, and if so, it is a laudable goal. Again, R7RS-large is free to use something other than 177, but we should make it first priority to ensure all systems we have are compatible. It's important to keep in mind that 177 doesn't really introduce any new semantics - it's just the lowest common denominator of 10 existing Scheme implementations that are not going away. > Again, it would be nice if could discuss and agree upon general runtime > semantics first, then reader syntax, then the syntactic system, then > keyword objects and then the applications. This is fine. It's worth stating again that I very much appreciate your & others' continued investment in the discussion, and I'm not in a hurry to push 177 out the door before an acceptable consensus has been reached.