Content deleted Content added
No edit summary |
Zeno Gantner (talk | contribs) m links |
||
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
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 [[Minimalism|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.
Line 10:
Scheme has very little syntax compared to many other programming languages. It has no operator precedence rules because they are explicit in the notation.
Thanks to its [[macro]] facilities, Scheme can be adapted to any problem ___domain. Extending Scheme to naturally support [[object-oriented programming]] can be done using only macros.
Scheme encourages [[functional programming]]. Pure functional programs need no global variables and don't have side-effects, and are therefore automatically [[thread-safe]], automatically verifyable and have more of these nice properties. However, Scheme can also do [[variable assignment]] for those who want it.
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
== Standards ==
|