2010-11-18 5 views

Antwort

2

Für my_list und my_append, die Lösungen sind:

(defun my_list (&rest arguments) 
    `(,@arguments) 
) 

(defun my_append (a_list an_item) 
    `(,@a_list ,an_item) 
) 

(my_append (my_list 'a 'b 'c) 'd) 

ich wahrscheinlich falsch bin, aber ich Ich kenne keine alternative Methode, um Paare zu bilden, daher scheint eine Alternative zu Nachteile nicht möglich zu sein. Trotzdem bin ich ziemlich neu in der LISP-Welt.

+0

Können Sie eine einfache Erklärung dafür geben, wie die Codes funktionieren. Bitte. –

+0

Das bedeutet, dass das nächste Symbol, das Sie schreiben, nicht ausgewertet wird. So erstellen wir die Liste. Das bedeutet, dass das nächste Symbol ausgewertet werden muss (kann nur nach einem Backquote verwendet werden) Das @ entfernt die Elemente aus einer Liste/einem Paar, um sie aufzulisten. (Kann nur nach einem,) –

+0

verwendet werden. 'und' @ '?' & 'ist Referenz? –

0

Wenn Sie Ihre Listen wollen das gleiche sein wie die onces native Anwendung, Sie haben mit einigen primitiven beginnen einen Nachteil zu konstruieren, wahrscheinlich Nachteile oder gepunktetes Paar, und etwas, das eine ziehen cons Zelle auseinander (Auto, Cadr). Die anderen können daraus entstehen.

Wenn Sie die Dinge neu implementieren wollen, die funktionell sind (Wortspiel beabsichtigt) äquivalent, siehe http://en.wikipedia.org/wiki/Cons#Not_technically_fundamental

+0

Das sind "Schema" Implementierung. Ich denke, Common-Lisp-Implementierungen wären anders. –

+0

Ja, aber die Konzepte würden immer noch gelten –

+0

Ja, aber können Sie mir einfach zeigen, wie "Nachteile" implementiert werden können, ohne "Liste" und "Anhängen" zu verwenden? Ich denke, dass die Implementierungen härter sein würden. –