Obtenir foo variable est non liée essayer d'utiliser un tutoriel de projet rapide

StackOverflow https://stackoverflow.com/questions/5353441

  •  27-10-2019
  •  | 
  •  

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")))
Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top