Scheme language overview
Scheme is a functional programming language which was firstly introduced in 1975 by Gui Lewis Steel Jr. and Gerald Jay Sussman. In 1978 there was the first implementation of the language by MIT institute.
The most important feature of Scheme, and which probably makes a significant distinction between Scheme itself and the Lisp language, is to be extremely simple to learn and to use profiquely: even a not expert programmer could develop quite complex Scheme scripts with little effort. Hence it is probably one of the best language to approach computer programming problems being a beginner programmer.
Scheme is based on very few syntactic rules and there are only little restriction about the composition of the rules itself. These are main concept of Scheme programming (obviously it is not an exhaustive list):
[Statically scoped variables] Consider the following example:MzScheme implementation overviewthe result will be 3 and not 7 since the environment used by g procedure has the (define x 1) binding. It implies that a program is simpler to read and to debug because data values don't depend on execution order.
(define x 1)
(define (f x) (g 2))
(define (g y) (+ x y))
(f 5)[Latent type] Scheme interpreter associates type information to memory object instead of to variables. This is one of the most important (but not the only!) difference between Scheme and C++ and in CScheme application I introduced some algorithms to handle it.
[Object has unlimited extent] In Scheme language no object will ever be deallocated (to say the truth there is a conservative garbage collector which releases data values not still referenced).
[First class procedure] Scheme procedures are object as any other object. Therefore they could be passed as arguments to other procedures.
[External Representation] Every Scheme object has at least one external representation which is simply a string.
The Programming Language Team (PLT) of Rice University developed one of the best implementation of the Scheme language, MzScheme.
The main features of MzScheme are:
[Open Source] The product is Open Source; hence it is possible to develop not commercial MzScheme-based application freely.[Standard] MzScheme is a standard scheme in the sense that it is in compliance with the official documents which fix Scheme concepts.
[Multiplatform] MzScheme runs correctly under many operating systems (Windows, Unix-like OS, Macintosh etc.). It is a guarantee of the solidity of the project and also a guarantee of CScheme potability.
[Extension] MzScheme offers further services and tools which are not Scheme standards such as: an object system to build classes and objects; a unit system to separate source code in modules; a particular exception-based mechanism to protect from errors; multi-threading support which works on every platforms; the support for multi namespaces etc.