- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Emacs 作为我的 Common Lisp(准确地说是 SBCL)编辑器,并使用 SLIME。我按照说明设置了 Quicklisp here ,并检查它是否在 SLIME 之外工作,一切都很好 - 我可以抓取并下载代码,包括它,一切。
现在,我尝试使用 Emacs 中的“编译/加载文件”命令来获取顶部包含以下内容的源文件:
(ql:quickload "priority-queue")
(defpackage :tournament
(:use :cl :priority-queue))
(in-package :tournament)
现在,再一次,不是在 SLIME 中,这工作得很好。但是,在 SLIME 中,我收到以下形式的错误:
The name "PRIORITY-QUEUE" does not designate any package.
[Condition of type SB-KERNEL:SIMPLE-PACKAGE-ERROR]
当然还有回溯。我是否遗漏了一些特别的东西?我使用 Emacs 中的 package-install
安装了 slime,并且我的 .emacs 文件中有以下代码来进行设置:
(setq inferior-lisp-program "/usr/local/bin/sbcl")
(require 'slime)
(slime-setup)
最佳答案
发生这种情况是因为编译和加载时间不同。
编译时,不会评估普通函数调用(例如ql:quickload
)。当编译器尝试处理 defpackage
形式(这不是一个普通的函数调用,而是一个在编译时有副作用的宏)时,加载的函数“priority-queue”尚未被调用,包不可用。
如果您加载文件而不是编译和加载,您将不会看到此内容,因为加载会在加载时评估每个表单。
有几个可用选项。最简单的方法是将您对 ql:quickload
的调用包装在 eval-when
中,例如
(eval-when (:compile-toplevel :load-toplevel :execute)
(ql:quickload "priority-queue"))
我更喜欢为我的项目定义一个系统,无论多么小,所以我会创建一个如下所示的锦标赛.asd 文件:
(asdf:defsystem #:tournament
:depends-on (#:priority-queue)
:serial t
:components ((:file "tournament.lisp")))
我将其放入 ~/quicklisp/local-projects/tournament/(与锦标赛.lisp 一起)并在 repl 中使用 (ql:quickload "tournament")
来开始并加载它。
我经常使用后一种设置,因此我编写了一个名为 quickproject 的 Lisp 程序来为我做这件事。 .
关于emacs - SLIME 和 Quicklisp 相处得不好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23676072/
我已经安装了 Emacs 和 SBCL,并且已经设置了环境变量。我还下载了 quicklisp,但我无法使用它(我使用的是 Windows 8)。 我加载它: c:\home>sbcl ~~load
我目前正在使用 quicklisp 运行 SBCL。我找到了一个我试图加载的旧项目 (ql:quickload "project") 当我收到依赖错误 SYSTEM FILE-IO NOT FO
我正在尝试使用 cl-heap 库,但是当我运行时 (quicklisp:quickload 'cl-heap) 它返回: The archive file "cl-heap-0.1.6.tgz" f
我有一个稍微修改过的 cl-json 版本,用于实现不佳的服务器解析器。当我尝试 (ql:quickload :cl-json) 时,它自然会加载他们存储在服务器上的文件,而不是我存储在本地硬盘上的修
在我的程序开始时加载 quicklisp 的正确方法是什么?我目前正在将 quicklisp 插入到我的 .eclrc 中的块中复制/粘贴,例如 ;;; quicklisp (let ((quickl
我已将 Quicklisp 设置为在 SBCL 运行时运行,并将以下行添加到我尝试使用 priority-queue library 的文件顶部。 (正如我之前的问题 Priority queue f
调用(ql:quickload "system-name")后,QuickLisp完成系统的下载和安装,它到底把它放在哪里? 我尝试在我的项目文件夹中查找,但它不在那里,而且我在 ~/quicklis
我正在使用Quicklisp在我的 Common Lisp 项目中加载库并我需要加载某个库的自定义版本,而不是 Quicklisp 提供的版本。 库的自定义版本存储在 Quicklisp 的本地项目目
在 SBCL 中评估 (quicklisp-quickstart:install) 我得到(linux): debugger invoked on a SB-BSD-SOCKETS:CONNECTIO
我尝试安装 Lisplab使用 asdf 和 quicklisp,但结果都失败了。 我使用 sbcl 和 slime。 任何人都可以帮我安装。我只想在 lisp 中操作矩阵:) 谢谢,lisper!
我正在尝试在我的 Windows 计算机上安装 FUF/SURGE,但卡在了一个步骤上。 Instruct quicklisp where to find the system definition
我把failing.asd (in-package :asdf-user) (defsystem "failing"
我即将去没有互联网接入的偏远地区进行长途旅行,我想完成一些 lisp 编程。我认为这可能是明智的 下载整个 quicklisp 存档,包括它的所有依赖项 将 quicklisp 自身配置为从本地副本快
我已经使用 quicklisp 安装了 CL-PNG 包。 (ql:quicklisp 'png) 现在我想定义我自己的依赖于 CL-PNG 包的包。像这样: (defpackage :FOO (
我的 Debian 系统安装了旧版本的 FLEXI-STREAMS 库,作为其他一些 Debian 软件包的依赖项。因此,在系统上的每个 Lisp 实现中,ASDF 都会自动从文件系统深处的某个地方加
我正在编写一个 (SBCL) Common Lisp 程序,该程序在文件顶部有以下行: (defpackage :my-package (:use :cl :cl-who :hunchentoot
我使用 Emacs 作为我的 Common Lisp(准确地说是 SBCL)编辑器,并使用 SLIME。我按照说明设置了 Quicklisp here ,并检查它是否在 SLIME 之外工作,一切都很
我知道如何列出 Quicklisp 提供的所有系统 (ql:system-list) 而且我需要获得一种我想为 Guix 打包的最依赖的系统。是否有任何 ASD 或 Quicklisp 工具可以提供该
我使用 Emacs 作为我的 Common Lisp(准确地说是 SBCL)编辑器,并使用 SLIME。我按照说明设置了 Quicklisp here ,并检查它是否在 SLIME 之外工作,一切都很
我知道如何列出 Quicklisp 提供的所有系统 (ql:system-list) 而且我需要获得一种我想为 Guix 打包的最依赖的系统。是否有任何 ASD 或 Quicklisp 工具可以提供该
我是一名优秀的程序员,十分优秀!