我假设传递给 lisp 函数的值被分配给与参数名称匹配的引号。然而,令我惊讶的是:
(defun test (x) (print (eval 'x)))
(test 5)
不起作用(变量 x 未绑定)。因此,如果参数不作为符号存储在函数中,那么这个例子中的 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)。当然,我可以做一个 let 并为每个参数设置一个单独的行,但考虑到我正在做四个参数中的每一个都相同,这看起来更干净。但是,我收到变量 R1 未绑定的错误。