[gambit-list] slime (swank) and gambit

Marc Feeley feeley at iro.umontreal.ca
Thu Dec 8 08:54:24 EST 2011

On 2011-12-07, at 12:05 AM, Attila Lendvai wrote:

> i couldn't stop yesterday, and used it as a first scheme hacking
> session opportunity to fix it myself... looks like i joined
> wasting effort on scheme swank. how will i be able to complain about
> it now...? :)
> my plan is to first coordinate the swank effort, because swank-chicken
> seems to be more functional and also kept updated. my plan for now is
> to set up a swank-scheme repo that brings these efforts together
> (official slime has some r6rs code, swank-gambit, and swank-chicken at
> least, maybe others not on my radar yet).

I think coordinating development efforts of various swank implementations for Scheme is a good idea.  It will help motivate the people interested in using SLIME with Scheme.

However I'm not sure it will reduce the total man-hours needed to develop the swank implementations.  That's because a lot of the code is system dependent, and the hard part is finding out how to implement a particular SLIME feature for a particular Scheme system.  For example, how to access threads (get list of threads, interrupt a thread, create a new REPL, etc), or get debugging information (source location of error, backtrace, content of frame, etc), or select a coding system for I/O.  All of these things and more are possible with Gambit, but other systems don't implement these features, or implement them differently.

> so, my first question: what's the situation with r6rs? my impression
> is that the scheme crowd is not too keen on jumping the bandwagon...
> is the situation something like this: having a portable swank-scheme
> *based* on r6rs is a good thing to pursue on the long term (with
> backend specific extensions ala official slime on various CL's), but I
> should expect bugs and headaches along the way due to r6rs
> immaturities of various scheme VM's?
> if the above holds, then i'd go that way and hunt down and/or
> workaround the bugs i meet along the way.

Support for R6RS is not widespread among the main implementations of Scheme.  You are better off targeting R4RS/R5RS with an eye on R7RS-small which has a better chance of widespread acceptance (especially if Alex Shinn completes his Snow revival...).  In your code, you could use the cond-expand form to conditionalize your code on the Scheme system.  For those systems without cond-expand, a file specific to that Scheme system can define it as a macro.  Alternatively (but harder I think), abstract the operations you need from the Scheme system, and have the common swank code call into the system specific implementation of the interface.


More information about the Gambit-list mailing list