Lisp重新定义函数

时间:2014-01-07 11:15:10

标签: lisp common-lisp

有人可以帮助了解这里发生了什么吗?

(DEFUN G(L)(+(CAR L)(CADR L)))
(SETQ H`F)(SET H `G)

我想知道在评估时会发生什么(F`(2 3 4 5 6))

我已经在我的lisp解释器中写了它,但是我收到以下错误:

Undefined function F

1 个答案:

答案 0 :(得分:5)

Common Lisp具有值的命名空间和函数的另一个命名空间。

CL-USER 49 > (DEFUN G(L)(+(CAR L)(CADR L)))
G

CL-USER 50 > (SETQ H 'F)
F

CL-USER 51 > (SET H 'G)
G

CL-USER 52 > F
G

CL-USER 53 > (symbol-value 'F)
G

CL-USER 54 > (symbol-function 'f)

Error: Undefined function F in form (SYMBOL-FUNCTION F).

您所做的只是设置F的值,而不是函数F