Ich nahm an, dass Werte, die in eine Lisp-Funktion übergeben wurden, einem Zitat zugewiesen werden, das dem Namen des Parameters entspricht. Allerdings war ich überrascht, dass dies:Wie werden Funktionsparameter in Lisp gespeichert?
funktioniert nicht (die Variable x ist ungebunden). Wenn also Parameter nicht als Symbole in der Funktion gespeichert sind, was genau ist dann in diesem Beispiel IS? Gibt es eine Möglichkeit, Parameter von einem Symbol aus aufzurufen, das mit dem Parameternamen übereinstimmt?
Weitere Kontext: Was Ich mag würde, ist, etwas zu tun wie folgt aus:
defun slice (r1 c1 r2 c2 board)
(dolist (param '(r1 c1 r2 c2)) ;adjust for negative indices
(if (< (eval param) 0)
(set param (+ (length board) (eval param)))))
;Body of function
Grundsätzlich möchte ich durch die ersten vier Parameter zu durchlaufen und eine Anpassung an alle ihre Werte machen, wenn sie < sind Natürlich könnte ich einen Let geben und eine individuelle Linie für jeden Parameter haben, aber wenn ich bedenke, dass ich dasselbe für jeden der vier Parameter tue, schien das sauberer zu sein. Allerdings bekomme ich den Fehler, dass die Variable R1 nicht gebunden ist.
Es ist die Umsetzung spezifisch. [SBCL] (http://www.sbcl.org/manual/index.html) geben Sie einige Informationen im Kapitel Fremdfunktionsschnittstelle, etc. –