【发布时间】:2013-10-24 18:59:34
【问题描述】:
我假设传递给 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
基本上,我想遍历前四个参数,如果它们
【问题讨论】:
-
它是特定于实现的。 SBCL在Foreign Function Interface等章节中给出一些信息。
标签: function parameters lisp common-lisp