Common lisp Quicklisp:使用加载的库
我已经将Quicklisp设置为在SBCL运行时运行,并将以下行添加到我试图在中使用的文件顶部(如我前面问题的答案中所建议的)。然而,当我尝试使用它时,我从SBCL得到错误,说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
优先级队列
中的函数没有定义!我错过了什么
作为参考,我试着写下如下内容:
(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 #'<)