SchemeScheme is a functional programming language, dialect of Lisp with two distinguishing features: it is small and tries to be clean.
Its language definition (latest being R5RS), including formal semantics, is about 50 pages long. This is good and bad. A good thing is that it is easy to implement, which makes it good for experimentation and learning in general, or as a core language to extend in a domain-specific way. It is also relatively easy to learn and master or to metaprogram (the Tube is a case in point). A bad thing is that it there the language definition has so few features that every implementation has to add its own to provide a useful programming environment, and that there are zillions of implementations that each does things in its own different, incompatible way. There now exist a process to harmonize such extensions, SRFIs. However, no such thing as a module system or a namespace management system has been standardized, which makes all these extensions a big mess.
It tries to be clean in the sense that it is not constrained much by backwards compatibility as is Common Lisp, but instead attemps to provide simple semantics. (It has been said that Scheme is a Lisp that tries to become ML). Among notable differences with respect traditional Lisp: Scheme has a single namespace for functions and variables (it is a "Lisp-1"); Scheme has first-class reentrant continuations (which implies lots of "interesting" problems for implementations); R5RS added a stripped-down special purpose macro system (though most Scheme implementations also have a full-blown defmacro-like macros).
- Bigloo outputs high performance binaries.
- DrScheme and MzScheme includes a portable gui library and an interactive environment, amongst other things.
- The Hotdog Compiler a new scheme compiler under development. Backends to the jvm, to c, and to .net using the same runtime system.
- MIT Scheme.
- S2 - a Scheme to Scheme Compiler.
- Stalin a very aggressive optimizing compiler for Scheme.
- Twobit a simple optimizing compiler for Scheme.
- Prescheme - a Scheme dialect and compiler, part of the s48 distributions.
- VLISP: A Verified Implementation of Scheme.
CompilersNote: in the Lisp tradition some Scheme compilers have a REPL and compile every new definition incrementally. Other have a separate interpreter and few are batch only.
- escm Embedded SCheme processor.
- OScheme a small, embeddable interpreter, which conforms to R4RS, except for some restrictions.
- Script-Fu is the first (a TCL version exists now, also) GIMP scripting extension.
- SIOD: Scheme in One Defun a small-footprint implementation of Scheme that is provided with some database, Unix programming and cgi scripting extensions.
- SLIB a portable scheme library providing compatibility and utility functions.
- Sizzle an embeddable Scheme interpreter.
- TinyScheme a lightweight Scheme interpreter that implements as large a subset of R5RS.
- Dream a tiny (24Kb) and nearly R4RS compliant Scheme interpreter written entirely in x86 assembly for Linux
- Lunacy Lunacy is a virtual-machine/compiler for the 'diamond-like' core of the Scheme programming language
- Gauche - a Scheme interpreter at SourceForge, [MIA]Home, freshmeat entry.
- HScheme a Scheme interpreter written in Haskell.
- A Lisp Interpreter in Forth (lisp.tar.gz) a simple Lisp-dialect (Scheme with dynamic scoping) interpreter in FORTH.
- LispMe Home Page Scheme for the Palm PDA.
- LMU Scheme.
- nanoScheme a tiny scheme interpreter, written in Delphi as a Windows console app.
- PerlScheme a Scheme interpreter in Perl.
- PLT Scheme - a family of Scheme implementations.
- pyscheme Scheme in Python.
- Pocket Scheme a Scheme for Pocket PC and Handheld PC.
- QScheme a fast Scheme interpreter (generaly between 2 and 70 times faster than other Scheme interpreters).
- scheme48 aka s48 and the SCheme SHell.
- Scheme for Squeak.
- Systas - Tom Lord's Scheme interpreter, closely related to SCM and Guile.
- SXM (freshmeat entry) (a.k.a. CXEMA) a portable implementation of Scheme.
- Useless Toy Scheme [.tar.gz], FKA plonk, a Scheme bytecode interpreter.
- XLISP, from v. 3.0 is a superset of the Scheme with extensions to support object-oriented programming.
- WScheme aka World Scheme, a non-compliant Scheme interpreter.
- The Jscheme Web Programming Project, (also by Peter Norvig) Scheme in Java.
- Kawa a Java-based Scheme system.
- SISC (freshmeat entry) an extensible Java based interpreter of Scheme.
- Skij small Scheme interpreter, written in and running in Java, has extensions that allow interactively creation, inspection, and manipulation of arbitrary Java objects.
Java based implementations
- Idyl - a Dylan interpreter in Scheme.
- Ian Bicking's Logo in Scheme.
- Arthur Nunes-Harwitt's Logo in Scheme.
- Nyquist, A Sound Synthesis and Composition Language, implemented in XLisp.
Other languages implemented in Scheme
Also linked from: AL C Compiler dlopen VM Common Lisp Continuation-Passing Style Design Pattern E Erlang EuLisp FramerD FunOS fxm Gerald Jay Sussman Guile Guile VM Kali kew Languages ToDo LispOS Lunacy Macro Meta-Circular Miasma NASOS Object-Oriented Parsing PL 101 Ravi REBOL Reflective Programming Languages SICP Sting Type System zzz