WhatIsSchemeCrossReference

There are lots of Scheme implementations, and each implementation extends Scheme standard in some way. It is a good thing to have variations, for it allows people to explore various implementation techniques. Downside is, however, the compatibility. Sometimes the same functionality is implemented in different names, or different functionalities are named the same.

It is not only a problem when you want to port a Scheme program from one implementation to another. When you start to write a set of general libraries, you need to think about the names, and you'll wonder---do those names conflict against some existing functions in other implementations? You can look at SRFIs and some popular implementations, but you may missing some.

This site is an attempt to help the situation. You can use this site in number of ways:

  • You can look for particular procedures/syntaxes by name, to see if it is available on other Scheme implementations. Start from the alphabetical index on the side.
  • Each implementation provides a particular view of certain system components (e.g. filesystem) and a set of APIs based on it. Some of such concepts are categorized. Start from the concepts index on the side.
  • You can also start from a particular implementation to check what kind of extensions it has. However, note that it'll take long time to cover all aspects of all implementations, so even if you don't find a particular procedure/syntax in the implementation page, it doesn't mean the implementation lacks it. Active implementations evolve, so it's also likely that some part of this site is out of date. (You can fix it by yourself, in case if you noticed. See below).

It won't be completed soon, or more likely it will never be; but this is Wiki, so anybody who find something to be added or updated can do so. You're welcome to improve this site. See EditGuideline for how to modify and create entries.

Also it should be noted that this is not a reference manual. I have no intention to cover all aspects of all existing Scheme implementations. Some entries have brief description of what they do, but it is just for convenience, and you should see the implementation's documentation. However, you're welcome to start editing entries to add more explanations if you feel like it.

Enjoy.