Wichtige Formen und Funktionen
| Zweck | Racket |
|---|---|
| Definition | (define x 5), (define (f a) ...) |
| Funktion | (lambda (x) ...) |
| Bedingung | if, cond, case, when, match |
| Liste | (list 1 2), '(1 2), cons, first, rest |
| Schleife | for, for/list, for/fold |
| Hash | make-hash, hash-ref, hash-set! |
| Struktur | (struct name (feld ...)) |
| Klasse | (class object% ...) |
| Fehler | with-handlers, raise |
| Makro | define-syntax-rule |
| Ausgabe | displayln, printf, format |
#lang racket
(define (zeige name wert) (printf "~a ~a~n" (~a name #:min-width 22) wert))
(zeige "(string? \"a\")" (string? "a"))
(zeige "(symbol? 'a)" (symbol? 'a))
(zeige "(list? '())" (list? '()))
(zeige "(pair? '(1))" (pair? '(1)))
(zeige "(equal? '(1) '(1))" (equal? '(1) '(1)))
(zeige "(eq? 'a 'a)" (eq? 'a 'a))
(zeige "(eqv? 2.0 2.0)" (eqv? 2.0 2.0))
(zeige "(= 1 1.0)" (= 1 1.0))
(zeige "(void)" (void))
(zeige "(length '())" (length '()))
(zeige "(string->symbol \"x\")" (string->symbol "x"))
(zeige "(procedure? car)" (procedure? car))
(zeige "(exact->inexact 22/7)" (exact->inexact 22/7))
(zeige "(string<? \"b\" \"a\")" (string<? "b" "a"))Ausgabe
(string? "a") #t (symbol? 'a) #t (list? '()) #t (pair? '(1)) #t (equal? '(1) '(1)) #t (eq? 'a 'a) #t (eqv? 2.0 2.0) #t (= 1 1.0) #t (void) #<void> (length '()) 0 (string->symbol "x") x (procedure? car) #t (exact->inexact 22/7) 3.142857142857143 (string<? "b" "a") #f
Typische Fehler
#lang racket
(displayln (unbekannt 1))Fehlermeldung
unbekannt: unbound identifier
#lang racket
(displayln (+ 1 "2"))Fehlermeldung
+: contract violation
Weiterführende Quellen
- docs.racket-lang.org: Guide und Reference
- „How to Design Programs“ (htdp.org): Lehrbuch, kostenlos online
- „Beautiful Racket“ (beautifulracket.com): eigene Sprachen bauen
- „Realm of Racket“ und „The Racket Guide“
Merke
- Racket ist eine moderne Lisp-Variante mit großer Standardbibliothek und Sprachbaukasten
#langbestimmt die Sprache der Datei- Unveränderlichkeit, Rekursion, Makros und Verträge machen Racket zum idealen Lehr- und Forschungswerkzeug
Aufgabe
Baue mit #lang ein kleines Rechner-DSL oder lies das erste Kapitel von "Beautiful Racket".