Obtenir foo variable est non liée essayer d'utiliser un tutoriel de projet rapide
Question
J'ai suivi les instructions ici: http://xach.livejournal.com/278047.html et les obtenu au travail. J'ai appelé le test du projet, donc j'ai un fichier test.lisp qui ressemble à:
;;;; test.lisp
(in-package #:test)
;;; "test" goes here. Hacks and glory await!
(defun foo ()
(format t "hello from EMAIL-DB package~%"))
Quand je lance (ql: QuickLoad "test") Je reçois: The variable FOO is unbound.
Si je commente le (en paquet #: test) ligne, alors foo n'est plus délié quand je le charge. Ce qui me dit que la fonction foo est syntaxiquement correct.
Qu'est-ce que je fais mal? Pourquoi est-foo lorsque l'utilisation non liée (ql: QuickLoad « test»)?
Voici mon fichier de package:
;;;; package.lisp
(defpackage #:test
(:use #:hunchentoot))
Et mon fichier test.asd:
;;;; test.asd
(asdf:defsystem #:test
:serial t
:depends-on (#:hunchentoot
#:cl-who
#:postmodern)
:components ((:file "package")
(:file "test")))
La solution
Votre package de test ne pas utiliser le package CL, de sorte que votre DEFUN est le test :: DEFUN (non CL: DEFUN). Il n'y a pas de macro définition TEST :: DEFUN, de sorte que le système procède à l'évaluation à l'aide du règles d'appel de fonction, qui doivent évaluer chaque sous-formulaire afin, puis appliquer la fonction aux valeurs des arguments. Le premier sous-formulaire est le test :: FOO, qui est une recherche d'une variable -. Et il n'y a pas de variable Test :: FOO dans votre image