Scheme 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).

<ul class="links">
<li>_("Schemers.org"|http://www.schemers.org/).</li>
<li>_("Bibliography of Scheme-related Research"|http://library.readscheme.org/).</li>
<li>_("SRFI"|http://srfi.schemers.org/) Scheme Request For Implementation.</li>
<li>_("Richard Kelsey's FTP Site"|ftp://ftp.nj.nec.com/pub/kelsey/) has the R5RS.</li>
<li>_("Indiana University's Scheme repository"|http://www.cs.indiana.edu/scheme-repository/), _("FTP"|ftp://ftp.cs.indiana.edu/pub/scheme-repository), _("French FTP Mirror"|ftp://ftp.inria.fr/lang/Scheme).</li>
<li>_("CMU's Scheme repository"|http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/lang/scheme/0.html).</li>
<li>_("An Introduction to Scheme and its Implementation"|ftp://ftp.cs.utexas.edu/pub/garbage/cs345/schintro-v14/schintro_toc.html).</li>
<li>_("An Executable Implementation of the Denotational Semantics for Scheme"|http://www.appsolutions.com/SchemeDS/).</li>
<li>_("SchemeTeacher"|http://www.schemeteacher.org/).</li>
<li>_("The Scheme Underground"|http://www.ai.mit.edu/projects/su/su.html).</li>
<li>_(LispOS)es, a few of which are Scheme based.</li>
<li>_(Oleg Kiselyov)'s _("Scheme Hash"|http://pobox.com/~oleg/ftp/Scheme/) includes lots of R5RS macro virtuosity.</li>
<li>_("Olin Shivers: History of T"|http://paulgraham.com/thist.html); T was an optimising native-code compiler for Scheme.</li>
<li>_("Schematics"|http://schematics.sourceforge.net/) a project devoted to the construction of high quality libraries for Scheme and PLT Scheme in particular.</li>
</ul>

<ul class="links"><h4>Alternative syntaxes</h4>
<li>_("indent"|http://www.accesscom.com/~darius/) a Python/Haskell-like syntax for Scheme, using indentation in place of parentheses.</li>
<li>_("mlish"|http://www.accesscom.com/~darius/) an infix syntax frontend for Scheme.</li>
<li>_("Pico"|http://pico.vub.ac.be) an educational Scheme with C-ish syntax.</li>
<li>_("Sonya"|http://www.laranja.org/projects/sonya/) Stack-Oriented Notation Yearned Adaptor for Guile, processes postfix stack-based languages.</li>
<li>_("Sugar"|http://redhog.org/Projects/Programming/Current/Sugar/) adds indentation-sensitive syntax to the LISP reader of scheme.</li>
</ul>

<ul class="links"><h4>Applications</h4>
<li>_("Siag Office"|http://www.siag.nu/) Scheme In A Grid, a free office package for _(Unix).</li>
<li>_("The Groupscheme Project"|http://groupscheme.sourceforge.net/) groupware in Jscheme.</li>
<li>_("WiLiKi"|http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?l=en), yet another Wiki clone written in Scheme.</li>
</ul>

<ul class="links"><h4>Books</h4>
<li>_("The Scheme Programming Language, 2nd edition"| http://www.scheme.com/tspl2d/) is online in hypertext format.</li>
<li>_("Simply Scheme"|http://http.cs.berkeley.edu/~bh/simply-toc.html) an introductory CS book about Scheme.</li>
<li>_("Structure and Interpretation Of Computer Programs"|SICP) an excellent introductory computer science book. We strongly recommend this book to beginners.</li>
<li>_("Teach Yourself Scheme In Fixnum Days"|http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html).</li>
<li>_("How to Design Programs An Introduction to Computing and Programming "|http://www.htdp.org/).</li>
</ul>

<ul class="implementations"><h4>Compilers</h4>
<strong>Note</strong>: 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.
<li><a name="bigloo"></a>
  _("Bigloo"|http://www-sop.inria.fr/mimosa/fp/Bigloo) outputs high performance binaries.</li>
<li>_("DrScheme"|http://www.drscheme.org/) and
  <a name="mzscheme"></a>_("MzScheme"|http://www.plt-scheme.org/software/mzscheme/) includes a portable gui library and an interactive environment, amongst other things.</li>
<li>_("The Hotdog Compiler"|http://rover.cs.nwu.edu/~scheme/) a new scheme compiler under development. Backends to the jvm, to c, and to .net using the same runtime system.</li>
<li>_("MIT Scheme"|http://www.swiss.ai.mit.edu/projects/scheme/index.html).</li>
<li>_("S2 - a Scheme to Scheme Compiler"|http://mangler.sourceforge.net).</li>
<li>_("Stalin"|http://www.ece.purdue.edu/~qobi/software.html) a <strong>very aggressive</strong> optimizing compiler for Scheme.</li>
<li>_("Twobit"|http://www.ccs.neu.edu/home/will/Twobit/) a simple optimizing compiler for Scheme.</li>
</ul>

<ul class="links"><h4>Document Processing</h4>
<li>_("BRL - the Beautiful Report Language"|http://brl.sourceforge.net/) a dialect of Scheme.</li>
<li>_("hpp: an HTML preprocessor"|http://www.jaked.org/hack/hpp/) a small Scheme system for preprocessing _(HTML).</li>
<li>_("Mistie"|http://www.ccs.neu.edu/home/dorai/mistie/mistie.html) a programmable filter, defines a document's markup using Scheme.</li>
<li>_("Scribe"|http://www-sop.inria.fr/mimosa/fp/Scribe/) a text processor and a Scheme</li>
<li>_("sgml-scheme"|http://www.red-bean.com/~craig/sgml-scheme/) a toolkit in Scheme for _(SGML).</li>
<li>_("SLaTeX"|http://www.ccs.neu.edu/home/dorai/slatex/slatxdoc.html) a program that allows you to write programs or program fragments ``as is'' in your TeX or LaTeX source.</li>
<li> _("tex2page"|http://www.ccs.neu.edu/home/dorai/tex2page/tex2page-doc.html) a TeX to HTML translator with special support for Scheme code typesetting.</li>
<li>_("GNU TeXmacs"|http://www.texmacs.org) a _(Guile) extendable _(WYSIWYG) structured document editor, inspired by TeX and Emacs.</li>
<li>_("XML Parsers for Scheme"|http://www196.pair.com/lisovsky/ssdscm/parsers.html).</li>
<li>_("l2t"|http://youpou.lip6.fr/queinnec/WWW/l2t.html) a literate programming utility that allows easy insertions of program source snippets towards TeX files.</li>
</ul>

<ul class="implementations"><h4>Embeddable</h4>
<li>_("escm"|http://www.shiro.dreamhost.com/scheme/vault/escm.html) Embedded SCheme processor.</li>
<li>_(Guile).
<li>_("OScheme"|http://koala.ilog.fr/abaird/oscheme/oscheme.html) a small, embeddable interpreter, which conforms to R4RS, except for some restrictions.</li>
<li>_("Script-Fu"|http://www.xcf.berkeley.edu/~gimp/script-fu/script-fu.html) is the first (a _(TCL) version exists now, also) GIMP scripting extension.</li>
<li>_("SIOD: Scheme in One Defun"|http://www.cs.indiana.edu/scheme-repository/imp/siod.html) a small-footprint implementation of Scheme that is provided with some database, _(Unix) programming and cgi scripting extensions.</li>
<li>_("SLIB"|http://swissnet.ai.mit.edu/~jaffer/SLIB.html) a portable scheme library providing compatibility and utility functions.</li>
<li>_("Sizzle"|http://www.pintus.de/mgrabmue/sizzle/sizzle.html) an embeddable Scheme interpreter.</li>
<li>_("TinyScheme"|http://tinyscheme.sourceforge.net) a lightweight Scheme interpreter that implements as large a subset of R5RS.</li>
</ul>

<ul class="links"><h4>Embeddings of other languages features into Scheme (excluding _(OO), see below)</h4>
<li>_("Infer"|http://www.cs.indiana.edu/~chaynes/infer.html) a statically-typed dialect of Scheme.</li>
<li>_("ModuLite"|http://www-swiss.ai.mit.edu/~jaffer/modulite_toc.html) Scheme Module Proposal.</li>
<li>_("pregexp"|http://www.ccs.neu.edu/home/dorai/pregexp/pregexp.html) Portable Regular Expressions for Scheme and _(Common Lisp).</li>
<li>_("pserializer (.txt)"|http://www.shiro.dreamhost.com/scheme/vault/pserializer.txt) portable serializer implementation.</li>
<li>_("Scawk"|http://charles.lehalle.free.fr/tools.html) a port of _(AWK) to Scheme.</li>
<li>_("Verischemelog: Verilog embedded in Scheme"|http://www.usenix.org/publications/library/proceedings/dsl99/jennings.html) a paper from _("USENIX Domain-Specific Languages 99"|http://www.usenix.org/publications/library/proceedings/dsl99/).</li>
</ul>

<ul class="implementations"><h4>Interpreters</h4>
<li>_("Gauche - a Scheme interpreter"| http://gauche.sourceforge.net/) at _(SourceForge), [_(MIA)]_(Home|http://www.shiro.dreamhost.com/scheme/gauche/), _(freshmeat) _("entry"|http://freshmeat.net/projects/gauche/).</li>
<li>_("HScheme"|http://hscheme.sourceforge.net/) a Scheme interpreter written in _(Haskell).</li>
<li>_("A Lisp Interpreter in Forth"|http://www.complang.tuwien.ac.at/~schani/) (_("lisp.tar.gz"|http://www.complang.tuwien.ac.at/~schani/lisp.tar.gz)) a simple Lisp-dialect (Scheme with dynamic scoping) interpreter in _(FORTH).</li>
<li>_("LispMe Home Page"|http://www.lispme.de/lispme/) Scheme for the Palm PDA.</li>
<li>_("LMU Scheme"|http://www.mathematik.uni-muenchen.de/~forster/sw/lmuscheme.html).</li>
<li>_("nanoScheme"|http://www.spf-15.com/nano.html) a tiny scheme interpreter, written in _(Delphi|Pascal) as a _(Windows|Microsoft Windows) console app.</li>
<li>_("PerlScheme"|http://www.geocities.com/markoriedelde/) a Scheme interpreter in _(Perl).</li>
<li>_("PHPScheme"|http://www.geocities.com/markoriedelde/scheme/index.html) a Scheme interpreter in _(PHP) and _(JavaScript).</li>
<li>_("pyscheme"|http://www-hkn.eecs.berkeley.edu/~dyoo/python/pyscheme/) Scheme in _(Python).</li>
<li>_("Pocket Scheme"|http://www.angrygraycat.com/scheme/pscheme.htm) a Scheme for Pocket PC and Handheld PC.</li>
<li>_("QScheme"|http://www.sof.ch/dan/qscheme/index-e.html) a fast Scheme interpreter (generaly between 2 and 70 times faster than other Scheme interpreters).</li>
<li>_("scheme48"|http://www.s48.org) _(aka) s48 and the _("SCheme SHell"|http://www.scsh.net/).</li>
<li>_("Scheme for Squeak"|http://www.iam.unibe.ch/~bergel/Scheme/).</li>
<li>_("SCM"|http://www-swiss.ai.mit.edu/~jaffer/SCM.html).</li>
<li>_("SXM"|http://www.malgil.com/sxm/) (_(freshmeat) _("entry"|http://freshmeat.net/projects/sxm/)) (a.k.a. CXEMA) a portable implementation of Scheme.</li>
<li>Useless Toy Scheme [_(".tar.gz"|http://www.accesscom.com/~darius/software/uts.tar.gz)], FKA plonk, a Scheme bytecode interpreter.</li>
<li>_("WScheme"|http://shrewm.net/wscheme/) _(aka)  World Scheme, a non-compliant Scheme interpreter.</li>
</ul>

<ul class="implementations"><h4>_(Java) based implementations</h4>
<li>_("The Jscheme Web Programming Project"|http://www.cs.brandeis.edu/~tim/jscheme/mainwebpage.html), (_("also"|http://www.norvig.com/jscheme.html) by Peter Norvig) Scheme in _(Java).</li>
<li>_("jscm"|http://www.bluetail.com/~luke/) a Scheme interpreter in _(JavaScript).</li>
<li>_("Kawa"|http://www.gnu.org/software/kawa/) a Java-based Scheme system.</li>
<li>_("SISC"|http://sisc.sourceforge.net/) (_(freshmeat) _("entry"|http://freshmeat.net/projects/sisc/)) an extensible _(Java) based interpreter of Scheme.</li>
<li>_("Skij"|http://www.alphaworks.ibm.com/formula/skij/) small Scheme interpreter, written in and running in _(Java), has extensions that allow interactively creation, inspection, and manipulation of arbitrary _(Java) objects.</li>
</ul>

<ul class="links"><h4>_(MUD)s</h4>
<li>_("The CM203 MUD"|http://www.cubik.org/mirrors/cm203_mud/) (_("Agora"|http://agora.cubik.org/wiki/view/Main/CM203MUD) _(Wiki)) a _(MUD) in Scheme.</li>
<li>_("MUSEME"|http://www.ccs.neu.edu/home/dougo/museme/) a _(MUD) in R4RS Scheme.</li>
<li>_("SchMUSE"|http://agora.cubik.org/wiki/view/Main/SchMUSE)a Scheme-based _(MUD) featuring a _(concurrent) _(OO) _(persistent|persistence) heap.</li>
<li>_("World"|http://world.dv8.org) a secure-shellable ASCII-based graphical MUD in WScheme.</li>
</ul>

<ul class="links"><h4>_(OO) and related</h4>
<li>_("GLOS"|http://www.ai.mit.edu/~gregs/ref-dyn-patterns.html) Greg's Little Object System.</li>
<li>_("Purely-functional Object-Oriented System"|http://www.okmij.org/ftp/Scheme/index.html#pure-oo) for a classless delegation-based oo system in Scheme.</li>
<li>_("RScheme"|http://www.rscheme.org)] an _(OO) extended Scheme.</li>
<li>_("Schematic"|http://web.yl.is.s.u-tokyo.ac.jp/pl/schematic.html) a _(Concurrent) _(Object-Oriented) Extension to Scheme.</li>
<li>_("Scheme++"|http://www.cs.indiana.edu/~dfried/) a static _(OO) Scheme extension.</li>
<li>_("ScmObj"|http://www.ccs.neu.edu/home/dorai/scmobj/scmobj.html) an Object System for Scheme.</li>
<li>_("Simulation of Object-Oriented Concepts and Mechanisms in Scheme"|http://www.cs.auc.dk/~normark/oo-scheme.html).</li>
<li>_("STklos"|http://kaolin.unice.fr/STklos/) a Scheme with _(CLOS)-like object system and an interface to GTK+.</li>
<li>_("Swindle"|http://www.cs.cornell.edu/eli/Swindle/) PLT SCheme with many additional features, the main is a CLOS-like object system based on Tiny-CLOS from Xerox.</li>
</ul>

<ul class="links"><h4>_(Partial Evaluator|Partial Evaluation)s</h4>
<li>_("fuse"|http://www.research.microsoft.com/~daniel/fuse-memos/README.html) a fully automatic _(partial evaluator|partial evaluation) for the _(functional) subset of _(Scheme).</li>
<li>_("The Program Generator Generator PGG"|http://www.informatik.uni-freiburg.de/proglang/software/pgg/) a partial evaluation system for Scheme.</li>
<li>_("Schism"|http://www.irisa.fr/lande/schism.html) a partial evaluator for a pure (side effect free) subset of Scheme.</li>
<li>_("Similix"|http://www.diku.dk/topps/activities/similix.html) an autoprojector (self-applicable partial evaluator) for a large higher-order subset of Scheme.</li>
</ul>

<ul class="links"><h4>Translators from/to Scheme to/from other languages and related</h4>
<li><a name="chicken"></a>
  _("chicken"|http://www.call-with-current-continuation.org/chicken.html) a Scheme-to-C compiler.</li>
<li>_("Clike"|http://www.rojoma.com/~robertm/clike/) (_(freshmeat) _("entry"|http://freshmeat.net/projects/clike/)) a compiler which converts code written in a simple C-like language to Scheme.</li>
<li>_("Hobbit"|http://www.swiss.ai.mit.edu/~jaffer/Hobbit.html) a full R4RS Scheme to C code compiler.</li>
<li>_("qobischeme"|http://www.neci.nj.nec.com/homepages/qobi/software.html) a library of useful Scheme procedures for Scheme->C.</li>
<li>_("Schelog"|http://www.ccs.neu.edu/home/dorai/schelog/schelog.html) an embedding of _(Prolog)-style _(logic) programming in Scheme.</li>
<li><a name="scm2cl"></a>
  _("scm2cl"|http://www.ccs.neu.edu/home/dorai/scmxlate/scm2cl.html) a _(Common Lisp) program that converts Scheme code to _(Common Lisp).</li>
<li>_("scm2p"|http://www.venge.net/graydon/scm2p.html) a Scheme to _(Perl) Translator.</li>
<li>_("schlep"|http://www.swiss.ai.mit.edu/~jaffer/Docupage/schlep.html) a Scheme to C translator for a subset of Scheme.</li>
<li>_("sml2scm"|http://www.is.s.u-tokyo.ac.jp/~sumii/pub/) a source-to-source translator from core S_(ML) (S_(ML) without modules) to Scheme.</li>
</ul>

<ul class="links"><h4>Other</h4>
<li>_("Envision: scheme with pictures"|http://www.cs.hmc.edu/~fleck/envision/envision.html) an extension of Scheme to program computer vision (_(AI)) applications.</li>
<li>_("Grover"|http://www.red-bean.com/~craig/grover/) a Groves, Graphs of Propertied Values (_(DAG)s), Implementation for Scheme.</li>
<li>_(Kali).</li>
<li>_("The Larceny Project"|http://www.ccs.neu.edu/home/will/Larceny/) a simple and efficient run-time system for Scheme, currently running on the SPARC architecture.</li>
<li>_("Hacking on a scheme implementation"|http://www.lysator.liu.se/~nisse/scheme/).</li>
<li>_("Schematica"|http://bwbohh.net/index.php?division=Software&subdir=Free/Schematica) (_(freshmeat) _("entry"|http://freshmeat.net/projects/schematica/)) a visual Scheme environment.</li>
<li>_("The Schemelet Page"|http://web.media.mit.edu/~kbrussel/Schemelets/) Scheme as a client-side web language.</li>
<li>_("Scheme Cross Reference Directory"|http://www.shiro.dreamhost.com/scheme/wiliki/schemexref.cgi) a directory of Scheme syntax, procedures, and variables found in various Scheme implementations.</li>
<li>_("scmxlate"|http://www.ccs.neu.edu/home/dorai/scmxlate/scmxlate.html) a configuration tool for software packages written in Scheme.</li>
<li>_("Scwm"|http://scwm.sourceforge.net) Scheme Constraints/Configurable Window Manager.</li>
<li>_("Shoe"|http://nocrew.org/software-shoe.html).</li>
</ul>
