Получение переменной foo не связано с попыткой использовать краткое руководство по проекту - PullRequest
1 голос
/ 18 марта 2011

Я следовал инструкциям здесь: http://xach.livejournal.com/278047.html и заставил их работать.Я вызвал проект test, поэтому у меня есть файл 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 Ответ

2 голосов
/ 18 марта 2011

Ваш тестовый пакет не использует пакет CL, поэтому ваш DEFUN - TEST :: DEFUN (не CL: DEFUN).Для TEST :: DEFUN нет макроопределения, поэтому система переходит к оценке с использованием правил вызова функций, которые должны оценивать каждую подчиненную форму по порядку, а затем применять функцию к значениям аргументов.Первой подчиненной формой является TEST :: FOO, которая является поиском переменной, и в вашем изображении нет такой переменной, как TEST :: FOO.

...