Scheme (programming language): Difference between revisions

Content deleted Content added
pl:
Ap (talk | contribs)
m copyedit
Line 5:
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.
 
Scheme's philosophy is unashamedly [[Minimalismminimalism|minimalist]]:. provide Its goal is not to pile feature upon feature, but to remove weaknesses and restrictions that make new features appear necessary. Therefore, Scheme provides 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.
 
 
== Advantages of Scheme ==
Line 17 ⟶ 18:
 
In Scheme, functions are first class citizens. This means they can be passed as arguments to another function or stored in a variable and manipulated. This allows higher order functions that can further abstract program logic.
 
 
== Disadvantages of Scheme ==
Unlike [[scripting language]]s such as [[Perl programming language|Perl]] or [[Python programming language|Python]], Scheme is not standardized beyond its core. Functions that exist in one Scheme implementation do not need to exist in another or may have a completely different name and/or interface. The ''Scheme Requests for Implementation'' (SRFI) process tries to remedy this.
 
 
== Standards ==
There are two standards that define the Scheme language: the official IEEE standard, and a de facto standard called the ''Revised<sup>n-th</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 ==
Line 28 ⟶ 32:
* [[Arithmetic geometric mean]]
* [[Tail recursion]]
 
 
== Implementations ==
Line 34 ⟶ 39:
* [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 [[Component object model]] and [[ODBC]] libraries.
* [[Gauche]] is an R5RS Scheme implementation developed to be a handy script interpreter, which allows programmers and system administrators to write small to large scripts for their daily chores. Quick startup, built-in system interface, native multilingual support are some of my goals. [[Gauche]] is being developed by Shiro Kawai and BSD licensed.It can be found at [http://www.shiro.dreamhost.com/scheme/gauche/index.html this site].
 
 
== Additional Resources ==
* [http://www.schemers.org/ A large collection of Scheme resources].