我認爲傳遞給lisp函數的值被分配給與參數名匹配的報價。不過,我很驚訝這樣的:函數參數如何存儲在lisp中?
(defun test (x) (print (eval 'x)))
(test 5)
不起作用(變量x是未綁定的)。所以如果參數沒有作爲符號存儲在函數中,那麼在這個例子中究竟是什麼?有沒有辦法從符合參數名稱的符號訪問參數?
更多背景: 我想要做的是這樣的:
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
基本上,我想通過前四個參數,如果他們是<迭代並作出調整的所有值0.當然,我可以爲每個參數做一個獨立的行,但考慮到我對四個參數中的每一個都做了同樣的事情,這看起來更清晰。 但是,我收到了變量R1未被綁定的錯誤。
它是具體實施。 [SBCL(http://www.sbcl.org/manual/index.html)提供一些信息,在外國功能接口章等 –