What tools do you use for commercial development in the Scheme language?
August 20, 2007 4:08 PM   Subscribe

What tools do you use for commercial development in the Scheme language?

I’d like to be able to develop quality, worthwhile software in Scheme. There are so many different implementations, and I don’t know how to pick one. From what I’ve seen, they all seem to have different module and OOP implementations, and varying support for R5RS. I don’t necessarily want a monolithic framework or IDE. I would like for my code to be portable, so that I can develop on a Mac laptop and deploy on a Linux server. Oh yeah, did I mention I want to talk to clients and other servers on the WWW? The tools would ideally be open source, of course.

What is your preferred implementation, and why? What modules do you use for network communication? What's the best source for off-the-shelf, open source, third-party libraries?
posted by ijoshua to Computers & Internet (6 answers total) 2 users marked this as a favorite
The major options in your case (which I arbitrarily [and off the top of my head, apologies if I forgot somebody] define to be Chez Scheme, PLT Scheme, Bigloo, Chicken, Gambit, and Scheme 48) will all work on both Mac and Linux without serious issues unless you do obviously non-portable things. They won't be portable from one implementation to the other. This is something that R5RS is notoriously bad about and that R6RS is trying to fix. (I would expect at least Chez, PLT, and Scheme 48 to become R6RS compliant in the near future; the others, less likely.)

As for libraries, PLT Scheme (with PLaneT) is probably your best bet. Another choice is Chicken's Eggs. Both of those have libraries that are specific to a particular implementation. There are also two (much younger) efforts at making cross-implementation-compatible sets of libraries: Snow, run by the Gambit people, and ScmPkg, run by the Bigloo guys.

PLT also comes with good tool support and documentation, and it's got a list of cool features as long as your arm. Its major shortcoming with respect to the others on the list is that it's probably the slowest. It's quite a bit faster than it once was, though, and it's easily fast enough for many commercial purposes. I have done commercial web development in PLT Scheme, as have these guys, who wrote an experience report you ought to read. I should also say that I'm one of the developers of PLT Scheme (in particular of PLaneT), so I'm clearly biased :).
posted by jacobm at 4:58 PM on August 20, 2007

i do not do commercial scheme development, but since starting with scheme a short time ago i have been shocked/depressed at how fragmented and non-interoperable the scheme communities are. imho you need to go with the biggest implementation you can find. i think that will probably be one of drscheme (aka plt/mzscheme), bigloo, chicken or, perhaps chez scheme. but i am not sure any will be as good as you expect.

one alternative is to use something like kawa and fall back on java libraries. that may be the best practical solution if you're an old java hand.

on preview: i use gambit with snow. the support is very good, termite (erlang in scheme...) is cool, and it's a fast implementation, but it does not get anywhere near your requirements.
posted by andrew cooke at 5:27 PM on August 20, 2007

oh, sorry, i thought you wanted oo, modules and ide. reading again, you don't seem to actually require much except tcp sockets, so perhaps gambit is ok.
posted by andrew cooke at 5:30 PM on August 20, 2007

Up front, I love Scheme. I've done a ton of work extending and embetting PLT Scheme, and I recommend it. PLT's got what poster wants.

andrew cooke notes the fragmentation of the scheme community. This is really true, and I think it's clear why. One of the first things a Scheme student is taught about the language is how to implement it. One of the wonders of Scheme is the brevity of a basic metacircular interpreter. Scheme interpreters are easy to implement in most any language. Combine this with the general not-invented-here attitude of most programmers, and the outcome is a proliferation of Scheme implementations. If for some reason a programmer is fed up with all implementations, there's a good chance he can be productive solely on his own. No other language is like that.

That's a tiny derail, but there's already been a best answer marked, so hey.
posted by rlk at 8:44 PM on August 20, 2007

Hopping on this bus: is there a non-commercial Scheme interpreter that won't make me learn Emacs-like key combos? Like, up-arrow rather that meta-p for "redisplay last input line"?
posted by orthogonality at 10:51 PM on August 20, 2007

i just tried with gsi (gambit's interpreter) and up-arrow does what you'd expect. but then it does in emacs too...
posted by andrew cooke at 3:56 AM on August 21, 2007

« Older How to get full RSS instead of partial RSS   |   Paging Mr. William Gates! Newer »
This thread is closed to new comments.