Scheme ist ein minimalistischer Dialekt der Lisp-Familie und wurde in den 1970er-Jahren am MIT von Gerald Jay Sussman und Guy L. Steele entwickelt. Die Sprache besteht im Kern aus Klammerausdrücken, Funktionen und einer extrem klaren Semantik.
Grundbefehle
(define x 42)— definiert eine Variable.(define (quadrat n) (* n n))— definiert eine Funktion.(lambda (x) (+ x 1))— erzeugt eine anonyme Funktion (Closure).(let ((a 1) (b 2)) (+ a b))— bindet lokale Variablen.(if <bedingung> <dann> <sonst>)— bedingte Auswertung.(cond ((= x 0) 'null) (else 'sonst))— mehrere Bedingungen.(car '(1 2 3))und(cdr '(1 2 3))— erstes Element bzw. Rest einer Liste.(cons 1 '(2 3))— fügt ein Element vor eine Liste.(map (lambda (n) (* n 2)) '(1 2 3))— wendet eine Funktion auf alle Elemente an.(apply + '(1 2 3))— ruft eine Funktion mit einer Argumentliste auf.
Tail Recursion und Standards
Scheme garantiert proper tail recursion: Rekursion in Endposition verbraucht keinen zusätzlichen Stack, wodurch Schleifen idiomatisch als rekursive Funktionen geschrieben werden. Die Sprache ist statisch scoped und funktional geprägt, erlaubt aber auch imperative Stile.
Der aktuelle Standard ist R7RS (Revised7 Report, 2013), der das Kernsprach-Design von R5RS um Bibliotheken, Records und Exception-Handling ergänzt. Bekannte Implementierungen sind GNU Guile, CHICKEN, Chez Scheme, Gambit und Racket (mit Scheme-Wurzeln). Auch die funktionale Denkweise von Scheme lebt in modernen Sprachen weiter — etwa in den pure-Funktionen von Solidity, die keine Zustandsänderungen auslösen und dadurch deterministisch bleiben.
Verwandte Grundlagen: Clojure-Befehle, Haskell-Befehle, Elixir/Erlang-Befehle.