tags:

views:

397

answers:

3

Hey everyone, I want to start using Scheme and I have two questions. First, would you recommend using an interpreter or a compiler for Scheme and why? Second, which interpreter or compiler for Scheme would you recommend and why? Thanks!

+5  A: 

For a beginner, I would highly recommend Dr. Scheme, since it gives you a really nice environment to work in, supports many dialects of Scheme, and gives very good failure and debugging information. I believe most implementations of Scheme are interpreters, although it is possible that there is a compiler out there.

If you are a commandline junkie like me, an alternative you might consider is mzscheme, which is essentially the same thing as Dr. Scheme, but without the graphical environment and a commandline interface.

Michael Aaron Safyan
Dr. Scheme is one of the most complete interpreters I have used. Very useful for beginners who get stuck at the command line and cannot translate the cryptic error messages into where the code is wrong.
ecounysis
Actually there more big-name Scheme compilers than interpreters: ikarus, chez (the non-free version), gambit, chicken, bigloo. In fact mzscheme/DrScheme is JITted in current versions. See http://en.wikipedia.org/wiki/Category:Scheme_compilers
Nathan Sanders
I am a command-line junkie too, I have been using Dr. Scheme a bit, but I will give mzscheme a try too. I've also been using gambit-c a little too, any thoughts on that?
Silmaril89
+4  A: 

I'd recommend not being concerned about whether it's implemented as a compiler, interpreter, or combination thereof -- especially to start with, the quality of help files (for one example) will matter far more than exactly how it's implemented.

As far as which one, PLT Scheme is what I use (by far) the most often.

Jerry Coffin
Thanks for the suggestion. I'm using PLT Scheme and I like it a lot.
Silmaril89
+3  A: 

I know you already accepted the answer, but for future visitors to this question, I recommend Chicken Scheme. It tends to produce much smaller executables than mzscheme does. Take the following hello world application, for instance:

(define (say-hello name)
  (print (string-append "Hello, " name))
  (newline))

(say-hello "Earthling")

Compiled with mzc --exec mztest hello.scm: 3.3M

Compiled with csc hello.scm -o ctest: 16k

And if you're after library support, Chicken provides Eggs Unlimited, which is like PlaneT for mzscheme (or gems for ruby).

Shaun
thanks for the suggestion.
Silmaril89
Chicken owns. I actually get to use it for real work, too. And don't forget about Gambit-C, either.
Jyaan