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