我按照这里的说明操作:http://xach.livejournal.com/278047.html并让他们工作。我打电话给项目测试,所以我有一个看起来像的test.lisp文件:
;;;; test.lisp
(in-package #:test)
;;; "test" goes here. Hacks and glory await!
(defun foo ()
(format t "hello from EMAIL-DB package~%"))
当我跑(ql:quickload“test”)时,我得到:The variable FOO is unbound.
如果我注释掉(包内#:test)行,那么当我加载它时,foo就不再是未绑定的了。这告诉我函数foo在语法上是正确的。
我做错了什么?使用时为什么foo不绑定(ql:quickload“test”)?
这是我的包文件:
;;;; package.lisp
(defpackage #:test
(:use #:hunchentoot))
我的test.asd文件:
;;;; test.asd
(asdf:defsystem #:test
:serial t
:depends-on (#:hunchentoot
#:cl-who
#:postmodern)
:components ((:file "package")
(:file "test")))
答案 0 :(得分:2)
您的测试包不使用CL包,因此您的DEFUN是TEST :: DEFUN(不是CL:DEFUN)。 TEST :: DEFUN没有宏定义,因此系统继续使用 函数调用规则,用于按顺序计算每个子表单,然后将函数应用于参数的值。第一个子表单是TEST :: FOO,它是一个变量的查找 - 并且你的图像中没有像TEST :: FOO这样的变量。