Common lisp Quicklisp:使用加载的库

Common lisp Quicklisp:使用加载的库,common-lisp,quicklisp,Common Lisp,Quicklisp,我已经将Quicklisp设置为在SBCL运行时运行,并将以下行添加到我试图在中使用的文件顶部(如我前面问题的答案中所建议的)。然而,当我尝试使用它时,我从SBCL得到错误,说优先级队列中的函数没有定义!我错过了什么 作为参考,我试着写下如下内容: (ql:quickload "priority-queue") (defparameter *heap* (make-pqueue #'<)) (ql:quickload“优先级队列”) (defparameter*heap*(在commo

我已经将Quicklisp设置为在SBCL运行时运行,并将以下行添加到我试图在中使用的文件顶部(如我前面问题的答案中所建议的)。然而,当我尝试使用它时,我从SBCL得到错误,说
优先级队列
中的函数没有定义!我错过了什么

作为参考,我试着写下如下内容:

(ql:quickload "priority-queue")

(defparameter *heap* (make-pqueue #'<))
(ql:quickload“优先级队列”)

(defparameter*heap*(在common lisp中,将pqueue#'命名为任何名称(变量、函数、宏)附加到符号上。在这种情况下,您有一个附加到符号上的函数
make pqueue
。使用包将符号彼此分离。这样可以将冲突保持在最低限度,还允许包不导出的内部变量/函数等

听起来你需要做以下三件事之一:


  • 在函数前面使用包名:
    (优先级队列:make pqueue#“您是否
    (在包中:优先级队列)
    (使用包:优先级队列)
    ,或者先以某种方式使用
    导入
    ?您可能会从阅读中受益。“我从SBCL获得错误”。我在问题中没有看到它们,我希望这不完全是“优先级队列中的函数未定义”。请在问题中包含错误输出。感谢您的出色调查。它比Sebel的书简洁得多,并且很好地理解了必要的观点。
    (use-package :priority-queue)
    (make-pqueue #'<)
    
    (defpackage :queue-test (:use :cl :priority-queue))
    (in-package :queue-test)
    (make-pqueue #'<)