3 ms·
First off: Neat project, I think this could actually turn into something super cool, especially if it could be transpiled into from another source. Think like C
by ThatGeoGuy 9y ago
First off: Neat project, I think this could actually turn into something super cool, especially if it could be transpiled into from another source. Think like CHICKEN, except instead of Scheme -> C -> binary, we could get $LANG -> Schism -> WASM (here, my $LANG of choice could even be CHICKEN)
However, I find the choice of R6RS... odd. Is it not easier to target R7RS-small or R5RS as a baseline to begin with? I know some people have problems (or too much love) with R6RS for what may be described as religious reasons, but I find it an extremely surprising choice here given that R7RS-small is much simpler and easier to get right.
Likewise, the majority of R7RS-compatible libraries would be available for free. That would add a lot for a high level language targeting WASM. Seems a strange choice, maybe the author has documented this somewhere?
- eholk 9y agoI haven't documented the choice of R6RS anywhere, so here is as good of place as any. The main reason was familiarity. R6RS is the Scheme I know best. I learned on R5RS and moved on the R6 when it was the new hotness. I vaguely was aware of R7 (I have friends that were on the standards committee), but didn't really know much more than that it had happened. There's a technical reason for choosing R6RS as well though. To me the defining characteristic of R6RS is the library system. In my mind, this has a pretty clear mapping to WebAssembly modules. Scheme libraries import some set of identifiers and export another set. WebAssembly modules are the same way, so I basically set it up so that Scheme exports and imports map directly only WebAssembly exports and imports. I'd definitely be open to supporting other Scheme versions in the future.
- e12e 9y agoI wonder how writing a wasm backend for larceny would compare to writing a new scheme. http://www.larcenists.org/ http://www.larcenists.org/
- ThatGeoGuy 9y ago> There's a technical reason for choosing R6RS as well though. To me the defining characteristic of R6RS is the library system. In my mind, this has a pretty clear mapping to WebAssembly modules. Well, this is a clear win for R6RS over R5RS, but R7RS has a much more flexible and well-agreed upon module system. One of the things about R6RS against its favour is that the module system never caught on with the major Scheme implementations (Gauche, Gambit, CHICKEN, Racket), and everyone kind of rolled their own. It's only in recent times that I've notice a lot more activity converging around R7RS. Nonetheless, thanks for responding. Familiarity is a reasonable enough reason for choosing a standard.
- na85 9y agoWhere can a person who only dabbles in Lisp read about the meaningful differences between R5/6/7 Schemes?
- ThatGeoGuy 9y agoYour best bet is likely http://www.scheme-reports.org/ http://www.scheme-reports.org/ This is the main page that the RnRS committee uses to post publications.