Definition of Scheme
Being one of the two main dialects of the Lisp language, Scheme is a functional programming language. It follows a minimalist design philosophy, having a standard core which is quite small accompanied with powerful tools that can be used to extend the language.
This philosophy is quite unlike the other main dialect of the Lisp language, the Common Lisp. It belongs to those languages which were the first to have support for first class continuations. Scheme was also influential in the efforts which later brought about the creation of the Common Lisp.
History of Scheme
Work on Scheme started in the 1970s when Steele and Sussman created a small Lis interpreter by making use of Maclisp in order to understand the Actor model, which belonged to Carl Hewitt. Later, Steele and Sussman added some mechanisms to their interpreter, allowing it to create actors ad send messages. They originally named it Schemer, but they used the ITS operating system which allowed file names having two part, each with six characters. This is why they had to change it to ‘Scheme’.
In 2003, a standardization process for languages was initiated at the scheme workshop. It aimed at the creation of an R6RS standard by 2006. However, this process did not yield much results. The R6RS had a standard module system along with the ability to separate he core language and the libraries.
Numerous drafts were created for this standard and released and the final edition was the R5.97RS. The new standard was ratified on 28th August 2007 as a result of a successful vote. Many modern day implementations of Scheme, such as Racket or Chez Scheme have support for the R6RS standard.
Several changes were brought to the language with the advent of the R6RS standard. Some of the changes were: the source code was specified in Unicode; the character data was also specified in Unicode; and the introduction of new module system took place.
The R6RS standard was considered to be going away from the minimalist philosophy and therefore, led to a controversy. The Scheme Steering committee announced in August 2009, that the language would be broken into two parts: a modern one for programmers and a small minimalist version of casual implementers and educators. On 15th April 2013, the ninth draft for the R7RS (smaller part) was released and after the vote, the final report was launched on 6th August 2013.