Warum ist es, dass die Common Lisp Array-Syntax ihre Argumente nicht Auswertung ist:Common Lisp: Warum nicht das Array Literal Argumente auswerten?
(let ((a 1)) #2A((a 2) (3 4)))
=> #2A((A 2) (3 4))
ich, es war #2A((1 2) (3 4))
hätte das gedacht. Ist dies, weil A
nicht zur Leserzeit verfügbar ist?
Würden Sie erwarten, das Listenliteral '((a 3) (3 4))' zu bewerten? – kwatford
Ist ''((a 2) (3 4))' ein Listenliteral? Ich dachte, es wäre das "Zitat" und "((2) (3 4))" war Listenliteral. –
Das '' 'ist nur ein Lesemakro für' quote'. Also "((a 2) (3 4))" ist nur "(Zitat ((a 2) (3 4))). Im Quellcode für ein allgemeines Lisp-Programm ist die Liste in Anführungszeichen ein Listenliteral. Bare-Listen stellen den Code des Programms dar, nicht seine Daten. Es ist zunächst ein wenig verwirrend, aber es wird später Sinn ergeben. – kwatford