2.4.5. Symbole

Symbole sind Zeichenfolgen, die mit einem beliebigen Charakter ausser einer Zahl oder den Zeichen ", ' oder # beginnen und anschließend beliebig viele Zeichen (mit Ausnahme von sogenannten white-space-characters, wie Leerzeichen, Zeilenwechsel oder Tab-Zeichen) enthalten.

  ;;; gültige Symbole

  a
  ein-symbol
  noch-0-+*-ein-Symbol
  _und-noch123-eins_
  N!a-?m1e

  ;;; keine Symbole:

  1hallo ;;; beginnt mit einer Zahl
  #hallo ;;; beginnt mit dem Zeichen #
  "hallo ;;; wird als unvollständige Zeichenkette gelesen

Für die Namen globaler Variablen hat sich eingebürgert, den Namen durch ein '*' am Anfang und Ende einzurahmen. Bei Konstanten wird das '+' verwendet.

  ;;; globale Variablen

  *dateiname*

  *anzahl-orgeln*

  ;;; Konstanten

  +pi-halbe+

Lisp unterscheidet nicht zwischen Groß- und Kleinbuchstaben, d.h. die Symbolnamen Symbol1, symbol1, SYMBOL1 oder SyMboL1 sind für Lisp identisch. Wenn ein Symbol evaluiert wird, wird der Ausdruck evaluiert, an die das Symbol gebunden ist (Daher der Name Symbol). Will man diese Auswertung verhindern, muss man das Symbol durch Voranstellen des "'" quotieren.

  ;;; Auswertung von Symbolen:

  Hallo -> The variable hallo is unbound.

  (setf hallo 34) -> 34

  Hallo -> 34

  ;;; Quotierung verhindert die Auswertung von Symbolen:

  'Hallo -> hallo

Eine Spezialform von Symbolen sind Symbole, die mit einem Doppelpunkt beginnen: Diese Symbole werden keyword genannt und werden in vielen Kontexten von Lisp (spezielle Argumente in Funktionsaufrufen, Namen für Slots von Strukturen oder Klassen, etc.). Ein keyword evaluiert immer zu seinem Namen und es ist nicht möglich, ein Keyword an einen Wert zu binden. Anders ausgedrückt funktioniert der Doppelpunkt zu Beginn ähnlich, wie das Quotierungszeichen.

  ;;; Keywords:

  :vorname -> :vorname

  :NACHNAME -> :nachname

  ;;; keywords können nicht an einen Wert gebunden werden:

  (setq :nachname "Müller") -> Error: :nachname is a constant and thus can't be set.

results matching ""

    No results matching ""