duplicate

Die Funktion duplicate dupliziert Arrays (siehe Array), Hashtabellen (siehe Hashtabelle) oder Instanzen (siehe Instanz). Das einzige Argument der Funktion wird ausgewertet.

Das Resultat des Aufrufs ist abhängig von der Eingabe entweder ein Array mit den gleichen Abmessungen und den selben Elementen, oder eine Hashtabelle mit den gleichen Zuordnungen zwischen Schlüsseln und Werten, oder eine Instanz mit der selben Klasse (siehe class-of) und den selben Werten der Instanzvariablen (siehe slot-value) wie beim übergebenen Argument.

Das Resultat ist nie eingefroren (siehe freeze), auch wenn das für das Argument zutreffen sollte.

> (defclass thing ())
> (setq something (allocate-instance thing))
> (assignq something name "Hallo")
> (slot-value something (quote name))
"Hallo"

> (freeze something)
> (frozen? something)
t

> (setq otherthing (duplicate something))
> (slot-value otherthing (quote name))
"Hallo"

> (frozen? otherthing)
nil