#n=

Mit #n=, wobei n eine positive Ganzzahl ist, können Listen, Arrays oder Instanzen markiert werden. An weiter hinten liegenden Stellen der Eingabe kann dann mit #n# auf die markierte S-Expression verwiesen werden.

Der Mechanismus dient der Darstellung von zirkulären Datenstrukturen. Diese können bei Arrays und Objekten und auch mit der Beteiligung von Listen auftreten.

Für Instanzen lässt sich eine zirkuläre Datenstruktur einfach erreichen:

  (defclass thing ())
  (setq something (allocate-instance thing))
  (setq otherthing (allocate-instance thing))
  (assignq something reference otherthing)
  (assignq otherthing reference something)

Ohne die Möglichkeit für Verweise wäre es nicht möglich, die Instanz something (oder auch otherthing) auszugeben. Mit Referenzen ergibt sich die folgende textuelle Darstellung:

  #1=#.(let ((instance (allocate-instance thing))) (progn (assignq instance reference #.(let ((instance (allocate-instance thing))) (progn (assignq instance reference #1#) instance))) instance))


Siehe auch: read-from-string, write-to-string, #.