我开始学习 Lisp 并使用 Lispworks 个人版 6.1.1,在评估基本功能时遇到了问题。我能够在 Scheme 中正确使用它们,但是当我尝试在 Lisp 中评估它们时它们不起作用。
我知道在 Lisp 中每个符号都有两个命名空间。所以我尝试编写简单的程序来组合两个程序。它在 Scheme 中运行良好,但在 Lisp 中存在评估问题。
方案中的代码运行良好并返回 2
(define (comp a b)
(lambda (x)
(a (b x))))
(define test (comp car cdr))
(test '(1 2 3))
用 Lisp 重写的相同代码
(defun comp (a b)
(lambda (x)
(funcall a (funcall b x))))
(defun test (comp #'car #'cdr))
(funcall test '(1 2 3))
lispworks 中的错误是:
试图绑定一个非符号,
(FUNCTION CAR)
.
所以当我尝试(defun test (comp #'car #'cdr))
在听众中进行评估时,我得到了
(FUNCTION CAR)
在函数中用作变量名的非符号TEST
。
我不明白为什么它不能像那样写。我会感谢任何帮助