10 comments

[ 2.8 ms ] story [ 33.8 ms ] thread
Scheme has a really simple syntax but wouldn't this code be a little more readable with separate lexing, parsing, and evaluating steps?
The code is open source (GPL3), feel free to fork it from github and modify it.
There are a lot of Scheme implementations floating around the web, in any language you can imagine. I have one of my own (shameless plug: http://code.google.com/p/bobscheme/) in Python & C++, and there are many others, at least some of which are better than mine in some respects.

The implementation linked here is IMHO badly written - that's not good code to learn from. So if your goal is to learn how to implement Scheme, I suggest to look elsewhere. For example, one good resource is Scheme from Scratch: http://michaux.ca/articles/scheme-from-scratch-introduction

Note that this is nothing personal, I just frankly think this is not good code to learn from.

Racket Scheme (http://racket-lang.org) is a good Scheme implementation and provides plugins for other languages. C, for example:

http://planet.racket-lang.org/package-source/jaymccarthy/c.p...

Plugin Database: http://planet.racket-lang.org

Racket is good, but I think the discussion here is more about educational implementations - small, simple to grasp. There are of course also a number of industrial-strength implementations of the Scheme language in C and C++, but those are hardly the best place to start this learning!
Guile is worth mentioning here. Mature, LGPL and widely used. It supports R5RS and most of R6. It has hygienic macros. If you're looking to use a Scheme in production, you probably want Guile.

Stalin and Chicken Scheme might also be worth a look if you aren't faint of hearth.

http://www.gnu.org/s/guile/