Scheme (programming language): Difference between revisions

Content deleted Content added
No edit summary
Ap (talk | contribs)
mNo edit summary
Line 1:
The '''Scheme programming language''' is a [[functional programming language|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 [[computer memory garbage collection|garbage collection]] of unreferenced data. It uses lists as primary data structure, and list operations such as cdr and car.
Like Lisp, Scheme supports [[computer memory garbage collection|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]].
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 programming language|Planner]] and [[Conniver programming language|Conniver]], but its authors used the [[ITS operating system]] which didn't allow filenames longer than 6 characters.
Why the curious name? Well, it was originally
called "Schemer", in the tradition of the
languages [[Planner programming language|Planner]]
and [[Conniver programming language|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 ''Revised<sup>n<sup>th</sup></sup> Report on the Algorithmic Language Scheme'', nearly always abbreviated R<sup>n</sup>RS, where <I>n</I> is the number of the revision. The latest R<sup>n</sup>RS version is R<sup>5</sup>RS, available online at http://www.schemers.org/Documents/Standards/R5RS/ .
 
=== Examples ===