获取变量foo是未绑定的尝试使用快速项目教程

时间:2011-03-18 14:31:28

标签: sbcl quicklisp

我按照这里的说明操作: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")))

1 个答案:

答案 0 :(得分:2)

您的测试包不使用CL包,因此您的DEFUN是TEST :: DEFUN(不是CL:DEFUN)。 TEST :: DEFUN没有宏定义,因此系统继续使用 函数调用规则,用于按顺序计算每个子表单,然后将函数应用于参数的值。第一个子表单是TEST :: FOO,它是一个变量的查找 - 并且你的图像中没有像TEST :: FOO这样的变量。