Email or username:

Password:

Forgot your password?
Ramin Honary
I have been giving MIT/GNU Scheme a try

TL;DR it is pretty amazing!

According to the Ecraven's Scheme benchmarks, MIT/GNU Scheme is the 6th fastest major Scheme implementation (Guile is the 7th), and I have found it has several incredibly nice, ergonomic features unique to it. It even has its own text editor built-in (Edwin) which is a clone of Emacs 18, so it is quite archaic, but still gets the job done when you need to debug your Scheme programs. MIT/GNU Scheme is also quite minimal, which is good, but it unfortunately does not have as big a package ecosystem as Guile, Racket, or Chez.

I wrote a library for Functional Lenses in Guile Scheme, and I was going out of my way to stick to the R7RS standard, and to only use SRFIs (official Scheme language extensions), and not use absolutely any feature specific to Guile or the Guile namespaces. Then I tried to port my library to MIT/GNU Scheme, putting in the necessary "cond-expand" expressions... and it didn't work at all, even though MIT/GNU Scheme is in fact R7RS compliant. To be fair, I could probably make it work with a little more effort, for example, I have not yet learned how to use the debugger, and without the debugger, MIT/GNU Scheme tells you nothing when an error occurs.

I am just a little disappointed with how much effort it takes to make a R7RS compliant Scheme program work across just two different implementations. I hope I might have more luck building it with Larceny, Gambit, Racket/CS, Loko, and STklos. If I ever get my Lens library to work across all of the R7RS compatible implementations listed at docs.scheme.org, I'll report on what steps I had to take in order to make my R7RS Scheme code truly portable.

#Scheme #GuileScheme #R7RS

1 comment
blake shaw 🇵🇸

@ramin_hal9001 but Guile isn't r7rs compliant, even with (install-r7rs!) theres lots of idiosyncracies about Guile that makes it non-portable, so it shouldn't be the bar of portability between r7rs implementations.

that being said, #akku does a lot of tree shaking to make guile libraries work with r6rs and r7rs implementations. its currently a bit hit or miss, but does a fairly good job in my experience. if you packaged it for akku, I bet it could work given Weinholt's knowledge of the distinctions.

Also: Gambit is r4rs, loko is r6rs, and I don't think Larceny is still maintained. Chibi is an actively maintained r7rs tho. but Akku should help with the interop between r6/r7rs implementations.

@ramin_hal9001 but Guile isn't r7rs compliant, even with (install-r7rs!) theres lots of idiosyncracies about Guile that makes it non-portable, so it shouldn't be the bar of portability between r7rs implementations.

that being said, #akku does a lot of tree shaking to make guile libraries work with r6rs and r7rs implementations. its currently a bit hit or miss, but does a fairly good job in my experience. if you packaged it for akku, I bet it could work given Weinholt's knowledge of the distinctions.

Go Up