Kurz: > Achtung: Unausgeglichene Klammern sind der häufigste Anfängerfehler. Nutze einen Editor mit Klammerhervorhebung (Emacs mit Geiser, DrRacket, Vim mit Rainbow Parentheses).
Teil des Kurses Scheme
Wichtige Formen
| Zweck | Scheme |
|---|---|
| Definition | (define x 5), (define (f a) ...) |
| Funktion | (lambda (x) ...) |
| Lokal | let, let*, letrec, benannter let |
| Verzweigung | if, cond, case, when, unless |
| Zuweisung | (set! x 10) |
| Listen | cons, car, cdr, list, append, map, filter |
| Makro | define-syntax + syntax-rules |
| Fortsetzung | call/cc |
| Ausgabe | display, write, newline, format |
(define (zeile text wert)
(display text) (display " => ") (write wert) (newline))
(zeile "(quote (a b))" '(a b))
(zeile "(list 'a \"b\")" (list 'a "b"))
(zeile "(vector 1 2)" (vector 1 2))
(zeile "(cons 1 2)" (cons 1 2))
(zeile "(string #\\a #\\b)" (string #\a #\b))
(zeile "(exact->inexact 1/8)" (exact->inexact 1/8))
(zeile "(boolean? #f)" (boolean? #f))
(zeile "(procedure? car)" (procedure? car))
(zeile "(list 'quote 'x)" (list 'quote 'x))
(zeile "(char->integer #\\a)" (char->integer #\a))Ausgabe:
(quote (a b)) => (a b)
(list 'a "b") => (a "b")
(vector 1 2) => #(1 2)
(cons 1 2) => (1 . 2)
(string #\a #\b) => "ab"
(exact->inexact 1/8) => 0.125
(boolean? #f) => #t
(procedure? car) => #t
(list 'quote 'x) => (quote x)
(char->integer #\a) => 97Typische Fehler
(display (unbekannt 1))Fehlermeldung:
Unbound variable: unbekannt(display (+ 1 "2"))Fehlermeldung:
Wrong type argument in position 2Achtung
Unausgeglichene Klammern sind der häufigste Anfängerfehler. Nutze einen Editor mit Klammerhervorhebung (Emacs mit Geiser, DrRacket, Vim mit Rainbow Parentheses).
Weiterführende Quellen
- „Structure and Interpretation of Computer Programs“ (mitpress.mit.edu/sicp, kostenlos online)
- „The Little Schemer“ (Friedman, Felleisen)
- r7rs.org: der aktuelle Standard
- gnu.org/software/guile/manual: Handbuch von GNU Guile
Merke
- Scheme ist minimal, mächtig und ideal, um Programmierkonzepte zu verstehen
- Endrekursion, Closures, Makros und Continuations sind die Kernideen
Übungsaufgabe
Löse die ersten Übungen aus Kapitel 1 von SICP.
Quiz zur Selbstkontrolle
Wofür steht car?
- Das erste Element eines Paares (richtig)
- Das Auto
- Das letzte Element
- Die Länge
Was ergibt (list? '())?
- #t (richtig)
- #f
- Fehler
- null
Welches Buch ist der Klassiker zu Scheme?
- SICP (richtig)
- Clean Code
- K&R
- Design Patterns
Weiter im Kurs
Zurück: Implementierungen und Ökosystem
Alle Kapitel: Scheme im Überblick