EMZETT.
Login

Kurz: > Achtung: In Common Lisp hat nil zwei Bedeutungen: falsch und leere Liste. Das Fehlen eines Elements ist von nil als Wert nicht zu unterscheiden; nutze bei Hashtabellen den zweiten Rückgabewert von gethash.

Teil des Kurses Common Lisp

Kapitel 8 von 8 im Kurs Common Lisp. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Wichtige Funktionen

FunktionBedeutung
car / first, cdr / restKopf und Rest
cons, list, appendListen bauen
mapcar, reduce, remove-ifHigher-Order
funcall, applyFunktionen aufrufen
let, setfVariablen
defun, defmacro, lambdaFunktionen/Makros
loop, dolist, dotimesSchleifen
formatAusgabe
gethash, make-hash-tableHashtabellen
defstruct, defclassDatentypen
(let ((tabelle '(("length" . 3) ("reverse" . 3))))
  (dolist (zeile tabelle)
    (format t "~10a ~a~%" (car zeile) (cdr zeile))))
(format t "~a~%" (list (type-of 1) (type-of 1/2) (type-of 1.0d0) (type-of #\a)))
(format t "~a~%" (list (equal '(1 2) '(1 2)) (eq 'a 'a) (eql 1.0 1.0) (= 1 1.0)))
(format t "~a~%" (list (string 'abc) (symbol-name 'xyz) (intern "FOO")))
(format t "~a~%" (loop for i below 5 collect (expt 2 i)))

Ausgabe:

length     3
reverse    3
(BIT RATIO DOUBLE-FLOAT STANDARD-CHAR)
(T T T T)
(ABC XYZ FOO)
(1 2 4 8 16)

Typische Fehler

(print (undefined-funktion 1))

Fehlermeldung:

The function COMMON-LISP-USER::UNDEFINED-FUNKTION is undefined.
(print (+ 1 "2"))

Fehlermeldung:

The value
  "2"
is not of type
  NUMBER

Achtung

In Common Lisp hat nil zwei Bedeutungen: falsch und leere Liste. Das Fehlen eines Elements ist von nil als Wert nicht zu unterscheiden; nutze bei Hashtabellen den zweiten Rückgabewert von gethash.

Weiterführende Quellen

  • „Practical Common Lisp“ (Peter Seibel, kostenlos online)
  • „Common Lisp the Language“ und die HyperSpec (lispworks.com/documentation/HyperSpec)
  • „Land of Lisp“ und „On Lisp“ (Paul Graham)
  • lispcookbook.github.io/cl-cookbook

Merke

  • Lisp: Code ist Daten, Makros erweitern die Sprache, die REPL treibt die Entwicklung
  • CLOS, das Condition-System und der Compiler machen Common Lisp zu einer vollwertigen Industriesprache

Übungsaufgabe

Schreibe ein Makro mit-zaehler, das Aufrufe einer Funktion zählt.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Ökosystem und Werkzeuge

Alle Kapitel: Common Lisp im Überblick