Category:Scheme: Difference between revisions

Content added Content deleted
m (Undo last edit. Scheme is already an implementation of::Lisp.)
(edited text to discuss different RnRS implementations and libraries)
 
Line 10: Line 10:
{{codepad}}
{{codepad}}
{{language programming paradigm|functional}}
{{language programming paradigm|functional}}
'''Scheme''' is a multi-[[:Category:Programming Paradigms|paradigm]] programming language. It is one of the two main dialects of [[derived from::Lisp]] and supports a number of programming paradigms but is best known for its support of [[functional programming]]. It was developed by Guy L. Steele and Gerald Jay Sussman in the 1970s. Scheme was introduced to the academic world via a series of papers now referred to as Sussman and Steele's Lambda Papers. There are two standards that define the Scheme language: the official [[IEEE]] standard, and a de facto standard called the ''Revised<sup>n</sup> Report on the Algorithmic Language Scheme'', nearly always abbreviated R''n''RS, where ''n'' is the number of the revision. The current standard is '''R6RS''', and '''R7RS''' is in development.
'''Scheme''' is a multi-[[:Category:Programming Paradigms|paradigm]] programming language. It is one of the two main dialects of [[derived from::Lisp]] and supports a number of programming paradigms; however it is best known for its support of [[functional programming]]. It was developed by Guy L. Steele and Gerald Jay Sussman in the 1970s. Scheme was introduced to the academic world via a series of papers, now referred to as Sussman and Steele's Lambda Papers. There are two standards that define the Scheme language: the official [[IEEE]] standard, and a de facto standard called the ''Revised<sup>n</sup> Report on the Algorithmic Language Scheme'', nearly always abbreviated R''n''RS, where ''n'' is the number of the revision. The current standard is '''R7RS''', with '''R5RS''' and, less common, '''R6RS''' still in use.


Scheme's philosophy is minimalist. Scheme provides as few primitive notions as possible, and, where practical, lets everything else be provided by programming libraries.
Scheme's philosophy is minimalist. Scheme provides as few primitive notions as possible, and, where practical, lets everything else be provided by programming libraries.


Scheme was the first dialect of Lisp to choose static (a.k.a. lexical) over dynamic variable scope. It was also one of the first programming languages to support first-class continuations.
Scheme was the first dialect of Lisp to choose static (a.k.a. lexical) over dynamic variable scope. It was also one of the first programming languages to support first-class continuations.

==Running Examples==

Some examples from this site require particular versions of Scheme, or libraries, to run.

* R7RS programs typically begin with a line such as <tt>(import (scheme base) ...)</tt>
* R6RS programs with a line such as <tt>(import (rnrs) ...)</tt>
* R5RS programs don't require any preamble.


A semi-standard set of libraries for Scheme is the collection [[:Category:Scheme/SRFIs|SRFIs]] (from Scheme Requests For Implementation). These libraries provide additional functions operating on core data structures, such as SRFI-1 for lists and SRFI-13 for strings; additional data structures, such as SRFI-69 or SRFI-125 for hash tables; or additional functionality, such as SRFI-42 providing eager comprehensions. Example programs which require one or more SRFIs must be run on implementations which support that SRFI.

Scheme does not directly support a GUI library: some examples use [[:Category:Scheme/PsTk|PsTk]].


==Citations==
==Citations==

* [[wp:Scheme_%28programming_language%29|Wikipedia:Scheme (programming language)]]
* [[wp:Scheme_%28programming_language%29|Wikipedia:Scheme (programming language)]]
* [http://trac.sacrideo.us/wg/wiki/R7RSHomePage R7RS Scheme home page]
* [http://www.r6rs.org/ R6RS Scheme home page]
* [http://www.schemers.org/Documents/Standards/R5RS/ R5RS Scheme documentation]


{{implementation|Lisp}}
{{implementation|Lisp}}