Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Favorite Scheme Implementations

557 views
Skip to first unread message

Christopher P. Matthews

unread,
Aug 31, 2018, 3:17:35 AM8/31/18
to
Greetings, fellow Schemers. My name is Christopher, or Chris if you prefer. I’ve been a happy Schemer for about five years now, but I’ve just now gotten around to joining this group I’ve heard so much about. I don’t know any Schemers, or LISPers for that matter, so I’ve got nobody to engage in intelligent and educational discussion about Scheme with, so I’m hoping to meet my fellow Schemers from around the world. Very quickly before I get to my topic: I was born and raised in Sacramento, California, USA, and I currently live in Bakersfield, California. I’m 33-years-old, I’m a classically-trained concert pianist, and of course, a computer programmer.

Our beloved Scheme comes in many different implementations, and portability issues have caused headaches for many a Schemer. Students wishing to delve into the world of Scheme are intimidated by the many options, with no `official’ implementation. When one finds a suitable flavor, they may find that it doesn’t support their favorite RnRS. So, for my first post, I’m curious as to which implementations you guys use and why. For me, I started with MIT/GNU Scheme, but I wanted to use R7RS, so the hunt was on for a suitable candidate. I eventually settled on Larceny, as it’s very stable, offers full R7RS support, and provides nearly every SRFI. A problem soon arose when I needed to write a script for batch downloads, as I had need of it at the time. As it turns out, Larceny doesn’t offer full support for sockets, and coincidentally, one of the very few SRFIs it doesn’t currently support would turn out to be the one I needed (SRFI 106 I believe). They do provide, under the `experimental’ directory, an implementation for sockets, but being experimental, it’s not guaranteed to work cross-platform, and wouldn’t you know, it doesn’t work on mine. I couldn’t find another implementation with R7 support that simultaneously met my other requirements, so I made the decision (a hard decision it was) to switch back to R5RS, as it’s the most widely used/supported and won’t be going away any time soon. That being said, I went back to my roots and I now run MIT/GNU Scheme; I’m very happy with it, and I’m having a jolly time hacking Edwin. Just to be clear, I’m not looking for advice on choosing an implementation, I’m simply attempting to get to know other Schemers, and how they Scheme, and it’s very possible that I will learn of one I hadn’t heard of yet, so there’s an educational aspect here. So please, share with me your favored Scheme implementation, and if you would be so kind, elaborate a bit (which RnRS you use, platform/OS, editor, or anything else you’d like to share). Thanks in advance, and I’m excited about finally joining my fellow Schemers in this group, and I look forward to future in-depth discussion with you guys.

— Christopher P. Matthews
cpmatth...@icloud.com

godek....@gmail.com

unread,
Aug 31, 2018, 7:11:18 AM8/31/18
to
Hello Chris!

You should work on splitting your prose into more paragraphs,
to make it easier to digest :)
(also, it is a common practice on Usenet to split your lines
manually).

Regarding a one portable Scheme implementation, I think that Racket
is the best candidate. It is easy to install and works well on all
major operating systems. I have experience using it in a professional
environment, and it's my top recommendation for the puzzled beginners.

It also comes with a user-friendly IDE, and the Racket team has been
making efforts to switch their compiler to Chez, which is known
for its excellent performance and which was released to open source
relatively recently.

As to my favorite implementation, I am most accustomed to using Guile.
The Emacs package "geiser" makes the experience very similar to what
you get with MIT/GNU Scheme with Edwin. The thing I liked the most
in Guile is its documentation (available as texinfo) and lots of ways
of interfacing it with programs written in C.

However, its portability is far from perfect. Some features just don't
work on Windows (threads in particular), and the community isn't very
interested in fixing that.

Other than this, I also tried Chicken and enjoyed it a lot. It has a great
package manager and is around twice as fast as Guile. I also tried Gambit,
which was twice as fast as Chicken, but more puzzling to newcomers.

Gambit (lambda-native) and Kawa (for the JVM) are two options
for writing applications for Android. I think they both are advanced
and mature.

BTW if you're interested, I write a lot of Scheme-related answers on Quora:
https://www.quora.com/profile/Panicz-Godek/answers/Lisp-programming-language

godek....@gmail.com

unread,
Aug 31, 2018, 7:25:57 AM8/31/18
to
By the way, you may also be interested in this actively maintained set
of Scheme benchmarks:

https://ecraven.github.io/r7rs-benchmarks/

Pascal J. Bourguignon

unread,
Aug 31, 2018, 12:58:57 PM8/31/18
to
You may want to have a look at https://schemers.org

Notably for the portability question, when you want more than just r5rs,
have a look at the SRFIs!

https://srfi.schemers.org


Since you're a musician, you might be interested in Common Music. The
later versions are implemented in scheme.
http://commonmusic.sourceforge.net



In general I use MIT Scheme, or Bigloo.

(But I'm more a Common Lisper than a Schemer).
--
__Pascal J. Bourguignon
http://www.informatimago.com

Menche

unread,
Aug 31, 2018, 1:16:29 PM8/31/18
to
The two I have installed are Gambit and Chicken. Both are R5RS, but
Chicken has an egg (package) that adds R7RS support. Chicken also has a
package manager and module system with a very large selection. I find
Gambit's REPL much more user friendly (it has history and line editing
and completion) but I believe there are a few Chicken eggs that add
similar features. Both have a REPL and a compiler to C.

Amirouche Boubekki

unread,
Sep 1, 2018, 8:09:07 AM9/1/18
to
On Friday, August 31, 2018 at 1:11:18 PM UTC+2, godek....@gmail.com wrote:
> Hello Chris!

Welcome Chris!

> You should work on splitting your prose into more paragraphs,
> to make it easier to digest :)
> (also, it is a common practice on Usenet to split your lines
> manually).

Yes please :)

I mostly only used GNU Guile and BiwaScheme. I am also a Guix user.

I read about MIT Scheme but I was under the impression
that it was 'dead' implementation.

I also tried Racket and the mighty Chez.

- Racket doesn't support POSIX threads, so I can not use
for my 'monolith' architecture. I second what Godek said.
Racket has a beautiful documentation, big commmunity,
a lot of example code through the package manager, etc.

- Chez does have good POSIX thread support, but last time
I checked it was missing guile-fibers with https-get which
again is deal breaker for me at least. They are alternatives
but they don't work in my case. The thing I like about Chez
is a) the speed b) the support of recent RnRS c) debugger.
The documentation is good and the community is very helpful.

Maybe you will find the following interesting:

http://wingolog.org/archives/2013/01/07/an-opinionated-guide-to-scheme-implementations

If you look closely to other big languages they also have various
implementations. The difference is that in Scheme is that there is
no clear 'winner' outside Guile ;]

Also, a few of us hang on #scheme @ irc.freenode.net

Amirouche aka. amz3

Amirouche Boubekki

unread,
Sep 1, 2018, 8:10:32 AM9/1/18
to
On Saturday, September 1, 2018 at 2:09:07 PM UTC+2, Amirouche Boubekki wrote:
> On Friday, August 31, 2018 at 1:11:18 PM UTC+2, godek....@gmail.com wrote:
> > Hello Chris!
>
> Welcome Chris!
>

> If you look closely to other big languages they also have various
> implementations. The difference is that in Scheme is that there is
> no clear 'winner' outside Guile ;]

To be clear, my favorite language is Scheme, the implementation that
works for my current work is Guile.

John Cowan

unread,
Sep 1, 2018, 4:33:50 PM9/1/18
to
On Saturday, September 1, 2018 at 8:09:07 AM UTC-4, Amirouche Boubekki wrote:

> http://wingolog.org/archives/2013/01/07/an-opinionated-guide-to-scheme-implementations

I agree with the recommendation to read this, including the comments, which both correct some errors and add additional perspectives.

As a SRFI developer, I am currently using Chicken 4 (R5RS), Guile 2.2 (relaxed R6RS), and Chibi 0.8 (R7RS-small) to develop and test my sample implementations. SRFIs are a major asset of Scheme: see <http:srfi.schemers.org> for information. If you have JavaScript disabled, you should re-enable it for this site.

--
John Cowan http://vrici.lojban.org/~cowan co...@ccil.org
Ambassador Trentino: I've said enough. I'm a man of few words.
Rufus T. Firefly: I'm a man of one word: scram! --Duck Soup

Robert L.

unread,
Sep 7, 2018, 7:06:37 AM9/7/18
to
On 8/31/2018, godek....@gmail.com wrote:

> Other than this, I also tried Chicken and enjoyed it a lot. It has a great
> package manager and is around twice as fast as Guile. I also tried Gambit,
> which was twice as fast as Chicken, but more puzzling to newcomers.

Can anyone please give an example for which Gambit is twice as fast as
Chicken and Chicken is only twice as fast as Guile? (Be sure to compile
the Chicken with -O5.)

godek....@gmail.com

unread,
Sep 7, 2018, 9:01:32 AM9/7/18
to
I've tested that about 5 years ago, so some things might have changed.
I no longer have access to the code that I was trying it out
(it was a compiler for some SQL-like language IIRC).

But it seems that the "compiler" benchmark from
https://ecraven.github.io/r7rs-benchmarks/
could serve as an example.

Brad Lucier

unread,
Sep 7, 2018, 9:01:47 PM9/7/18
to
Here's an example where Gambit is 10 times as fast as Chicken. (An example where Chicken is 10 times as fast as Gambit is left as an exercise, but the web site

https://ecraven.github.io/r7rs-benchmarks/

may help.)

Gambit:

firefly:~/programs/gambit/gambit> gsi
Gambit v4.9.0

> (define big-prime (time (- (expt 2 74207281) 1)))
(time (- (expt 2 74207281) 1))
0.025787 secs real time
0.025786 secs cpu time (0.017580 user, 0.008206 system)
3 collections accounting for 0.001768 secs real time (0.001695 user, 0.000075 system)
7504 bytes allocated
9304 minor faults
no major faults
> (define big-print-str (time (number->string big-prime)))
(time (number->string big-prime))
24.917883 secs real time
24.915677 secs cpu time (24.516789 user, 0.398888 system)
90 collections accounting for 1.059701 secs real time (1.036293 user, 0.023297 system)
1165603784 bytes allocated
514769 minor faults
no major faults

Chicken:

firefly:/usr/local/chicken-4.13.0> csi

CHICKEN
(c) 2008-2017, The CHICKEN Team
(c) 2000-2007, Felix L. Winkelmann
Version 4.13.0 (rev 68eeaaef)
linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ]
compiled 2017-12-11 on yves.more-magic.net (Linux)

#;1> (use numbers)
; loading /usr/local/chicken-4.13.0/lib/chicken/8/numbers.import.so ...
; loading /usr/local/chicken-4.13.0/lib/chicken/8/chicken.import.so ...
; loading /usr/local/chicken-4.13.0/lib/chicken/8/foreign.import.so ...
; loading /usr/local/chicken-4.13.0/lib/chicken/8/numbers.so ...
#;2> (define big-prime (time (- (expt 2 74207281) 1)))
0.275s CPU time, 0.143s GC time (major), 10/0 mutations (total/tracked), 167/679 GCs (major/minor), maximum live heap: 9.21 MiB
#;3> (define big-print-str (time (number->string big-prime)))
259.824s CPU time, 3.649s GC time (major), 50224/32 mutations (total/tracked), 754/356040 GCs (major/minor), maximum live heap: 47.01 MiB

Robert L.

unread,
Sep 7, 2018, 9:22:37 PM9/7/18
to
Comparing the speed of Chicken to Guile.


===== Chicken 4.12.0 =====

;; Compile with:
;; csc -O5 count-change.scm

(define all-coins '(50 25 10 5 1))

(define (count-change amount)
(cc amount all-coins))

(define (cc amount kinds-of-coins)
(cond ((fx= amount 0) 1)
((or (fx< amount 0) (null? kinds-of-coins)) 0)
(else (fx+ (cc amount (cdr kinds-of-coins))
(cc (fx- amount (car kinds-of-coins)) kinds-of-coins)))))

(time (display (count-change 1000)) (newline))



On an old WinXP laptop:

801451
1.516s CPU time, maximum live heap: 119.28 KiB


===== Guile 2.0.11 =====

(define all-coins '(50 25 10 5 1))

(define (count-change amount)
(cc amount all-coins))

(define (cc amount kinds-of-coins)
(cond ((= amount 0) 1)
((or (< amount 0) (null? kinds-of-coins)) 0)
(else (+ (cc amount (cdr kinds-of-coins))
(cc (- amount (car kinds-of-coins)) kinds-of-coins)))))



scheme@(guile-user)> ,time (display (count-change 1000))
801451;; 66.750000s real time, 61.390000s run time. 0.000000s spent in GC.

===== =====

So Chicken is 40 times as fast as Guile.

Arthur A. Gleckler

unread,
Sep 8, 2018, 12:13:05 AM9/8/18
to
On Saturday, September 1, 2018 at 5:09:07 AM UTC-7, Amirouche Boubekki wrote:

> I read about MIT Scheme but I was under the impression
> that it was 'dead' implementation.

Why do people keep spreading this idea? MIT Scheme is certainly not dead, which one can easily see by its release history and its public Git repository. It is an excellent implementation, with a fairly good compiler and a nice development environment, including a full implementation of Emacs called Edwin.

Whatever you think of MIT Scheme, it is the implementation that Jerry Sussman, co-inventor of the language, uses for all his work. That, too, should count for something.

I would really be grateful if people stopped repeating this nonsense, or at least made some effort to check first.

Robert L.

unread,
Sep 8, 2018, 12:56:57 AM9/8/18
to
===== Gambit 4.6.1 =====

(define all-coins '(50 25 10 5 1))

(define (count-change amount)
(cc amount all-coins))

(define (cc amount kinds-of-coins)
(cond ((= amount 0) 1)
((or (< amount 0) (null? kinds-of-coins)) 0)
(else (+ (cc amount (cdr kinds-of-coins))
(cc (- amount (car kinds-of-coins)) kinds-of-coins)))))

(time (begin (display (count-change 1000)) (newline)))


801451
(time (begin (display (count-change 1000)) (newline)))
6031 ms real time
5203 ms cpu time (5203 user, 0 system)
no collections
152 bytes allocated
no minor faults
no major faults



So Chicken is 3.43 as fast as Gambit.

Robert L.

unread,
Sep 8, 2018, 11:53:28 AM9/8/18
to
Gauche Scheme:

lrange produces a lazy infinite list.

(define (find-indices nlist test)
(filter-map
(lambda (x i) (and (test x) i))
nlist
(lrange 1)))

(find-indices (iota 9) odd?)
===>
(2 4 6 8)

The lambda can be abbreviated.

(define (find-indices nlist test)
(filter-map
(^(x i) (and (test x) i))
nlist
(lrange 1)))


Brad Lucier

unread,
Sep 8, 2018, 6:23:36 PM9/8/18
to
On Saturday, September 8, 2018 at 12:56:57 AM UTC-4, Robert L. wrote:
> So Chicken is 3.43 as fast as Gambit.

Benchmarking is hard, I appreciate the effort that ecraven puts into it here:

https://ecraven.github.io/r7rs-benchmarks/

where he reports the following benchmark times on his machine:

cat: chicken-4.13.0 (13.79), gambitc-v4.8.9 (17.25)
string: chicken-4.13.0 (.17), gambitc-v4.8.9 (.57)

So if you're *really* interested in the "string" program, Chicken is 3.35 times as fast as Gambit.

But you recommended above:

;; Compile with:
;; csc -O5 count-change.scm

The Chicken manual says

-optimize-level 5

is equivalent to

-optimize-leaf-routines -block -inline -inline-global -specialize -unsafe -disable-interrupts -no-trace -no-lambda-info -clustering -lfa2

I'm no Chicken expert, but the documentation here:

http://wiki.call-cc.org/man/4/Declarations

leads me to believe that some of these compiler options are equivalent to the Gambit declarations

(declare (standard-bindings)
(extended-bindings)
(block)
(not safe)
(not interrupts-enabled))

and if I add these to the top of count-change.scm I get

firefly:~> csc -O5 count-change.scm
firefly:~> ./count-change
801451
0.58s CPU time, maximum live heap: 236.21 KiB
firefly:~> gsc -exe count-change.scm
firefly:~> ./count-change
801451
(time (begin (display (count-change 1000)) (newline)))
0.507591 secs real time
0.507598 secs cpu time (0.507598 user, 0.000000 system)
no collections
272 bytes allocated
7 minor faults
no major faults

This is with

firefly:~> csi -version

CHICKEN
(c) 2008-2017, The CHICKEN Team
(c) 2000-2007, Felix L. Winkelmann
Version 4.13.0 (rev 68eeaaef)
linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ]
compiled 2017-12-11 on yves.more-magic.net (Linux)

firefly:~> gsi -v
v4.9.0 20170203122653 x86_64-unknown-linux-gnu "./configure 'CC=gcc -march=native -D___CAN_IMPORT_CLIB_DYNAMICALLY' '--enable-single-host' '--enable-shared' '--enable-multiple-versions'"

So I would say that Chicken and Gambit are about the same speed for small programs that use unsafe fixnum arithmetic, unsafely.

Brad

Brad Lucier

unread,
Sep 8, 2018, 6:48:10 PM9/8/18
to
On Saturday, September 8, 2018 at 6:23:36 PM UTC-4, Brad Lucier wrote:
> Benchmarking is hard, I appreciate the effort that ecraven puts into it here:
>
> https://ecraven.github.io/r7rs-benchmarks/
>
> where he reports the following benchmark times on his machine:
>
> cat: chicken-4.13.0 (13.79), gambitc-v4.8.9 (17.25)
> string: chicken-4.13.0 (.17), gambitc-v4.8.9 (.57)
>
> So if you're *really* interested in the "string" program, Chicken is 3.35 times as fast as Gambit.

Ah, but it appears that these implementations do different things with "string", with Chicken using one-byte characters and Gambit using 4-byte characters (Unicode) by default. (I could configure Gambit to use one-byte characters, but I don't want to bother.) Feel free to correct me if I'm wrong.

So, sorry, I guess I don't have a program where Gambit and Chicken do the same thing and Chicken is three times as fast.

Marko Rauhamaa

unread,
Sep 8, 2018, 7:01:54 PM9/8/18
to
Brad Lucier <luc...@math.purdue.edu>:

> Benchmarking is hard, I appreciate the effort that ecraven puts into
> it here:

Speed is very rarely an interesting feature of a programming language.
For me, a complete and faithful implementation of the Linux system call
library is essential.


Marko

john....@seamlessdocs.com

unread,
Sep 24, 2018, 10:30:22 AM9/24/18
to
On Saturday, September 8, 2018 at 7:01:54 PM UTC-4, Marko Rauhamaa wrote:

> For me, a complete and faithful implementation of the Linux system call
> library is essential.

I think the most you can hope for is the Posix stuff, and not all of that (there are over 1000 Posix calls). Almost all Scheme implementations are portable to many systems besides Linux: *BSD, MacOS, Windows, often Solaris, occasionally BeOS or Plan 9.
You are a child of the universe no less than the trees and all other acyclic
graphs; you have a right to be here. --DeXiderata by Sean McGrath

Arthur A. Gleckler

unread,
Oct 29, 2018, 11:35:14 AM10/29/18
to
On Friday, September 7, 2018 at 9:13:05 PM UTC-7, Arthur A. Gleckler wrote:
> On Saturday, September 1, 2018 at 5:09:07 AM UTC-7, Amirouche Boubekki wrote:
>
> > I read about MIT Scheme but I was under the impression
> > that it was 'dead' implementation.
>
> Why do people keep spreading this idea? MIT Scheme is certainly not dead, which one can easily see by its release history and its public Git repository. It is an excellent implementation, with a fairly good compiler and a nice development environment, including a full implementation of Emacs called Edwin.

Chris Hanson just released MIT Scheme 10.1 last night:

https://www.gnu.org/software/mit-scheme/release.html

Amirouche Boubekki

unread,
Nov 2, 2018, 4:21:29 PM11/2/18
to
Sorry! I did not want to sound rude or something.

Thanks for the update. I will look at it.

Arthur A. Gleckler

unread,
Nov 2, 2018, 4:28:09 PM11/2/18
to
On Friday, November 2, 2018 at 1:21:29 PM UTC-7, Amirouche Boubekki wrote:

> Sorry! I did not want to sound rude or something.

Sorry for the strong reaction. I hear people make comments like that about MIT Scheme all the time, and I wanted to nip this one in the bud.

> Thanks for the update. I will look at it.

Thanks for taking a look.

Schol-R-LEA ;2

unread,
Nov 4, 2018, 9:29:43 AM11/4/18
to
On Friday, November 2, 2018 at 4:28:09 PM UTC-4, Arthur A. Gleckler wrote:
> On Friday, November 2, 2018 at 1:21:29 PM UTC-7, Amirouche Boubekki wrote:
>
> > Sorry! I did not want to sound rude or something.
>
> Sorry for the strong reaction. I hear people make comments like that about MIT Scheme all the time, and I wanted to nip this one in the bud.

I think the idea comes mainly from the fact that the MIT developers rejected R6RS when it first appeared, and AFAICT stuck with R5RS until recently when they added R7RS support. While this was never a big matter for, say, Bigloo, the status of MIT Scheme as the semi-official Scheme reference implementation prior to that point gave the impression that it wasn't going to continued due to that schism.

I think that the continued problems with the Windows version, leading to them recently dropping support for the Windows binary distribution entirely (I think the source can be compiled on Windows and run using WSL, but I haven't checked as I don't currently have a Windows box) contributed to this as well, giving the impression that the project was troubled and/or winding down (which was far from the case, I gather).

Mind you, outside of the Scheme community, there is a general impression that Scheme itself is moribund; the fact that this impression has lasted for at least 25 years that I know of is both sad and amusing. The Racket schism sort of reinforces this idea, though, given the emphasis on Racket being a different language rather than a Scheme implementation per se. I think a lot of the people who would otherwise want to use Scheme are turning to either Racket or Clojure instead, lately.

And as I've said elsewhere, my own goal is to develop either Apophasi or Thelema (or both) into its own thing as well, and am mostly using Scheme as the implementation language for that and the Assiah assembler. I am thinking of first writing a simple Scheme compiler, which I mean to name Yukari ;-), in my Leg assembler (an ARM assembler which I am writing as a testbed for ideas to possibly be used later) once I finish that; this would then evolve into a more advanced Scheme implementation called Elan, similarly implemented mutually-hosted in the more powerful Assiah, and would be the basis for Thelema later on. But since at this stage even the first steps of this is just a pipe-dream (don't bogart that opium, dude...), none of this is likely to see fruition.

Schol-R-LEA ;2

unread,
Nov 4, 2018, 9:35:42 AM11/4/18
to
I forgot to answer about preferred implementations: right now, I tend to cross-test with several R6RS implementations, primarily PLT-R6RS (bundled with Racket), Guile, and Vicare. I find it useful both as a way to check for implementation specificity, and because the different sets of warnings and error messages often helps in debugging.

I am willing - nay, eager - to entertain additional ones, but as the field for R6RS implementations seems a bit limited, and many older ones (e.g., Ikarus) are no longer supported, I am having trouble finding more test implementations.

George Neuner

unread,
Nov 4, 2018, 9:54:56 AM11/4/18
to
Too many people today have been conditioned by the plethora of
'devops' projects to expect many new versions each year. If they
don't see [near] constant release activity, they think a project is
dead.


I wish I knew a better way to educate them - the only thing that
really seems to work is a whack in the head. <frown>

George

Schol-R-LEA ;2

unread,
Nov 4, 2018, 10:00:06 AM11/4/18
to
On Sunday, November 4, 2018 at 9:35:42 AM UTC-5, Schol-R-LEA ;2 wrote:
> I forgot to answer about preferred implementations: right now, I tend to cross-test with several R6RS implementations, primarily PLT-R6RS (bundled with Racket), Guile, and Vicare. I find it useful both as a way to check for implementation specificity, and because the different sets of warnings and error messages often helps in debugging.
>
> I am willing - nay, eager - to entertain additional ones, but as the field for R6RS implementations seems a bit limited, and many older ones (e.g., Ikarus) are no longer supported, I am having trouble finding more test implementations.

I should add that I am currently - as I write this, in fact - trying out Larceny as well.

Marc Nieper-Wißkirchen

unread,
Nov 11, 2018, 4:05:51 AM11/11/18
to
Am Sonntag, 4. November 2018 15:35:42 UTC+1 schrieb Schol-R-LEA ;2:
> I forgot to answer about preferred implementations: right now, I tend to cross-test with several R6RS implementations, primarily PLT-R6RS (bundled with Racket), Guile, and Vicare. I find it useful both as a way to check for implementation specificity, and because the different sets of warnings and error messages often helps in debugging.
>
> I am willing - nay, eager - to entertain additional ones, but as the field for R6RS implementations seems a bit limited, and many older ones (e.g., Ikarus) are no longer supported, I am having trouble finding more test implementations.

Chez Scheme also implements R6RS.
0 new messages