Not entirely, no. For example, syntax-case and other macro systems can't be layered over syntax-rules. By the same token, the Posix API (SRFI 170) can't be layered over R7RS-small. It could be layered over an FFI, but there are just too many different kinds of FFIs out there. Here's the current list of non-portable SRFIs and pre-SRFIs that I have proposed to be voted on: Conditions: ConditionsCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/ConditionsCowan.md> File I/O: FilesAdvancedCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/FilesAdvancedCowan.md> plus SettingsListsCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/SettingsListsCowan.md> Threads: SRFI 18 <http://srfi.schemers.org/srfi-18/srfi-18.html> plus optional SRFI 21 <http://srfi.schemers.org/srfi-21/srfi-21.html> or FuturesCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/FuturesCowan.md> (simplified with monad) Sockets: SRFI 106 <http://srfi.schemers.org/srfi-106/srfi-106.html> or NetworkPortsCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/NetworkPortsCowan.md> with NetworkEndpointsCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/NetworkEndpointsCowan.md> Datagram channels (UDP sockets): DatagramChannelsCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/DatagramChannelsCowan.md> Timers: SRFI 120 <http://srfi.schemers.org/srfi-120/srfi-120.html> Mutable environments: EnvironmentsMIT <https://htmlpreview.github.io/?https://bitbucket.org/cowan/r7rs-wg1-infra/raw/default/EnvironmentsMIT.html> Host environment (Posix): SRFI 170 <https://htmlpreview.github.io/?https://bitbucket.org/cowan/r7rs-wg1-infra/raw/default/srfi-170.html> Access to the REPL: ReplCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/ReplCowan.md> Library declarations: LibraryDeclarationsCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/LibraryDeclarationsCowan.md> Interfaces: InterfacesCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/InterfacesCowan.md> Process control: ProcessesCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/ProcessesCowan.md> System commands: SystemCommandCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/SystemCommandCowan.md> Pure delay/force: PureDelayedGloria <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/PureDelayedGloria.md> Delimited continuations: Racket <https://docs.racket-lang.org/reference/cont.html>, Guile <https://www.gnu.org/software/guile/manual/html_node/Prompt-Primitives.html> , Scheme48/Kali <https://github.com/tonyg/kali-scheme/blob/master/scheme/misc/shift-reset.scm> , Gauche <https://practical-scheme.net/gauche/man/gauche-refe/Partial-continuations.html> , Chicken <http://wiki.call-cc.org/eggref/4/F-operator> Continuation marks: SRFI 157 <http://srfi.schemers.org/srfi-157/srfi-157.html> Extended exact numbers: SRFI 73 <http://srfi.schemers.org/srfi-73/srfi-73.html> or ExtendedRationalsCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/ExtendedRationalsCowan.md> Adjustable strings: SRFI 118 <http://srfi.schemers.org/srfi-118/srfi-118.html> (basic) or SRFI 140 <http://srfi.schemers.org/srfi-140/srfi-140.html> (mutable/immutable) Mutexes, condition variables: SRFI 18 <http://srfi.schemers.org/srfi-18/srfi-18.html> Port type detector: see ticket #177 <https://bitbucket.org/cowan/r7rs-wg1-infra/issues/177/distinguish-file-and-string-ports> Internationalization of strings: GettextCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/GettextCowan.md> Chronometers: Chronometer <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/Chronometer.md> Character-cell terminals: TerminalsCowan <https://bitbucket.org/cowan/r7rs-wg1-infra/src/4a3907a8b871518b0cf81e08084da6850278175b/TerminalsCowan.md> Graphics canvas: CanvasCowan <http://smallbasic.com/doc/?id=8&language=> Comments are extremely welcome. On Sat, Dec 21, 2019 at 7:24 PM Hendrik Boom <hendrik@topoi.pooq.com> wrote:
On Sat, Dec 21, 2019 at 11:02:55PM +0200, Lassi Kortela wrote:
R6RS is quite a big language and there are already so many good implementations of it that new ones might not have much to add. Same situation as with Common Lisp. R7RS is such a small language that all
kinds
of niche implementations are interesting and useful to explore.
Which is why they split R7RS into a small language and a large language that I home can be implemented entirely on top of the small langauge.
-- hendrik
_______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://mailman.iro.umontreal.ca/cgi-bin/mailman/listinfo/gambit-list