The Scheme programming language is a functional programming language which is a dialect of Lisp. It was developed by Guy L. Steele and Gerald J. Sussman in the 1970s and introduced to the academic world via a series of papers now referred to as Sussman and Steele's 'Lambda Papers.'
It was the first variety of Lisp to feature lexical variable scoping rather than dynamic variable scoping. Like Lisp, Scheme supports garbage collection of unreferenced data. It uses lists as primary data structure, and list operations such as cdr and car.
Scheme's philosophy is unashamedly minimalist: provide as few primitive notions as possible, and let everything else be implemented on top of them. For instance, the main mechanism for governing control flow is tail recursion.
Why the curious name? Well, it was originally called "Schemer", in the tradition of the languages Planner and Conniver, but its authors used the ITS operating system which didn't allow filenames longer than 6 characters.
Standards
There are two standards that define the Scheme language: the official IEEE standard, and a de facto standard called the Revisednth Report on the Algorithmic Language Scheme, nearly always abbreviated RnRS, where n is the number of the revision. The latest RnRS version is R5RS, available online at http://www.schemers.org/Documents/Standards/R5RS/ .
Examples
Scheme code can be found in at least the following Wikipedia articles:
Implementations
- http://www.scheme.com/ - Chez Scheme, a proprietary freeware Scheme interpreter and commercial Scheme compiler for Microsoft Windows and several UNIX systems
- http://www.gnu.org/software/guile/ - GNU Guile, a free Scheme interpreter packaged as a library that provides scripting to applications. The GIMP paint program uses Guile as part of GIMP's Script-fu system.
- http://www.plt-scheme.org/ - The PLT Scheme suite, a suite of Scheme programs for Windows, Mac, and Unix platforms including an interpreter (MzScheme), a graphical toolkit (MrEd), a pedagogically-oriented graphical editor (DrScheme), and various other components including COM and ODBC libraries.
Additional Resources
- http://www.schemers.org/ - A large collection of Scheme resources.
- http://www.htdp.org/ - Online book How to Design Programs which purports to teach programming using Scheme. The authors seem to have some very clear ideas on how they think teaching programming should be done.
- http://www.scheme.com/tspl2ed.html - Online book The Scheme Programming Language by R. Kent Dybvig. A useful language reference.
- http://library.readscheme.org/ - A bibliography of Scheme-related research including links to online versions of many academic papers, including all of the original 'Lambda Papers.'