2.2.2. Listen

Listen sind in Lisp allgegenwärtig. Sie werden durch runde Klammern ( und ) begrenzt. Zwischen diesen Klammern befinden sich die 'Elemente' dieser Liste.

  • Semantik einer Liste

    Listen können unterschiedliche Bedeutungen (Semantiken) haben. Sie können Daten darstellen oder eine ausführbare Prozedur bezeichnen.

;;; Listen als Daten:

(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29)

(Youngju Andrés Miki Elias Richard Camilo Amir Terje Ioannis Junsun Juan Hanyu Raphaël)

((Helmut Lachenmann) (Luigi Nono) (Karlheinz Stockhausen) (Salvatore Sciarrino))

((c fis cis) (g es) (a gis))

;;; Listen als Prozeduren

(+ 3 2 4)

(expt 2 3)

(print "hallo peng")

(list 'a 'b "hallo" 3 5 1)
  • Evaluation

    Bei der Evaluation einer nicht leeren Liste erwartet das Lisp System als erstes Element eine Funktion, ein Makro oder eine special form, die jeweils angeben, wie die übrigen Elemente der Liste ausgewertet werden sollen.

  • Quotierung

    Wenn eine Liste als eine Liste von Daten behandelt werden soll, kann man mit einem einfachen Anführungszeichen ' unmittelbar vor der öffnenden Klammer die Auswerung der Liste verhindern. Man nennt eine solche Liste mit vorangestelltem Anführungszeichen eine 'quotierte Liste'.

;;; Auswertung einer nicht quotierten Liste, deren erstes Element
;;; weder ein Funktionsname, noch ein Makroname, noch eine special
;;; form ist:

(1 2 3 4 5) ;; -> illegal function call

;;; Verhinderung der Auswertung durch Quotierung:

'(1 2 3 4 5) ;; -> (1 2 3 4 5)
  • Leere Liste

    Listen dürfen in Lisp auch gar kein Element enthalten. Eine Liste ohne Elemente nennt man 'leere Liste'. Eine leere Liste wird in Common Lisp mit den folgenden, gleichbedeutenden Zeichenfolgen dargestellt: (), '() bzw. NIL 2: Eine leere Liste evaluiert zu sich selbst und ist daher im Unterschied zu Listen mit mindestens einem Element ein 'Atom'. Die leere Liste bzw. das Symbol NIL spielt zudem in Common Lisp eine wichtige Sonderrolle, da es zugleich den boolschen Wahrheitswert "falsch" bezeichnet.

;;; Leere Liste

'() ;; -> nil
NIL ;; -> nil
()  ;; -> nil

;;; leere Listen sind Atome!

(atom '())  ;; -> t
(atom '(1)) ;; -> nil
2: NIL ist ein Akronym für Nothing In List.

results matching ""

    No results matching ""