rsr6 versus rsr5 for interpreter

I am currently thinking about building an interpreter or compiler system for the scheme language but I am a bit uncertain (given that my goal is to construct something small) which version of the language to use. Should I go with rsr6? My understanding is that rsr6 is a bit controversial.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

What is your goal?

If this is for your personal education, then I suggest R5RS, as it's smaller and simpler.

If you want to write something useful, then I'd suggest R6RS. Much of it's maligned complexity is in features that are a necessity for modern software development, such as network sockets, unicode support, and a module system.

But really, if you want something small to embed in another project, why are you re-inventing the wheel? Why not use Lua, Ypsilon, Scheme 48, or Guile?

Start with R5.

R5 is the basic "scheme," I guess. I'd advise you to go for compliance with that. If you are careful, you can implement most of it in a way that doesn't violate R6. That way, should you change your mind later, you can just add stuff to arrive at R6 with very few changes in what you've already written.

Thanks for the comments. I

Thanks for the comments. I might consider using Ypsilon as a starting point rather than rolling my own implementation from scratch (though this may be somewhat instructive). I am primarily interested in compiler/interpreter internals.

Starting from a subset of Scheme

Since you are interested in compiler/interpreter internals, you might start from scratch from a smaller subset of R5RS, and maybe it will grow into a more complete implementation. Just a thought...