2.6 KiB
Scheme
Scheme is a Lisp dialect created in 1975 by Guy Steele and Gerald Sussman at the MIT. Scheme is minimalistic and elegant leaning towards a functional programming paradigm, being the language used in the famous SICP book (using the MIT/GNU Scheme implementation).
Scheme is standardized in a series of documents called Revised^n Report on the Algorithmic Language Scheme (RnRS) (where the n
stands for
the version), being the most popular the R5RS revision released in 1998.
Controversy around the R6RS revision (The Great Bloatening)
In 2003 work in a new revision of Scheme began, R6RS, finished in 2007. This new revision was controversial since it added additional features that Scheme hackers deemed as a departure from Scheme's minimalism. In a attempt to amend this, work on R7RS began, splitting Scheme into two different (but still similar) languages, differing in the amount of features; a big language for "practical" use and a small minimalistic version.
Implementations
Since Scheme (specially the R5RS standard) is simple, there are multiple implementations:
- CHICKEN Scheme: compiler (AOT) and interpreter.
- MIT/GNU Scheme: compiler, one of the "original" implementations, also includes a debugger.
- Chez Scheme: another classic compiler, freed in 2016.
- GNU Guile: main Scheme implementation of the GNU project, used as a scripting language in some GNU projects.
- Gambit Scheme
- Chibi Scheme: small implementation with a focus in being embeddable.
- ...
Examples
Hello World
(display "Hello, Scheme!")
Factorial
;;; Tail recursive factorial
(define (fact n acc)
(if (zero? n)
acc
(fact (- n 1) (* acc n))))
(let ((ns '(4 0 5 10 1)))
(for-each (lambda (n)
(display n)
(display "! = ")
(display (fact n 1))
(newline))
ns))
Resources
- CHICKEN Scheme tutorials (of course most also applies to other implementations): https://wiki.call-cc.org/tutorials
- R5RS document
- Official Scheme site
- A incomplete tutorial in wikibooks: https://en.wikibooks.org/wiki/Scheme_Programming
- https://try.scheme.org/: Scheme in a web browser, seems to be Gambit Scheme.
- https://try.gambitscheme.org/
- https://docs.scheme.org/
- Teach Yourself Scheme in Fixnum Days
- R7RS site