标签: quicklisp

SLIME 和 Quicklisp 相处得不好

我使用 Emacs 作为我的 Common Lisp(准确地说是 SBCL)编辑器,并使用 SLIME。我按照此处的说明设置了 Quicklisp ,并检查它是否在 SLIME之外工作,一切都很好 - 我可以抓取并下载代码,包括它,一切。

现在,我尝试在 Emacs 中使用“编译/加载文件”命令来获取顶部包含以下内容的源文件:

(ql:quickload "priority-queue")

(defpackage :tournament
  (:use :cl :priority-queue))

(in-package :tournament)
Run Code Online (Sandbox Code Playgroud)

现在,再一次,不是在 SLIME 中,这工作得很好。然而,在 SLIME 中,我收到以下形式的错误:

The name "PRIORITY-QUEUE" does not designate any package.
  [Condition of type SB-KERNEL:SIMPLE-PACKAGE-ERROR]
Run Code Online (Sandbox Code Playgroud)

当然,还要加上回溯。我是否遗漏了一些特别的东西?我使用package-installEmacs 安装了 slime,并且在 .emacs 文件中包含以下代码来进行设置:

(setq inferior-lisp-program "/usr/local/bin/sbcl")
(require 'slime)
(slime-setup)
Run Code Online (Sandbox Code Playgroud)

emacs sbcl slime quicklisp

2
推荐指数
1
解决办法
470
查看次数

为什么我无法安装quicklisp?("包QUICKLISP-QUICKSTART不存在")

我已经安装了Emacs和SBCL,我已经设置了环境变量.我也下载了quicklisp,但我无法让它工作(我正在使用Windows 8).

我加载它:

c:\home>sbcl ~~load quicklisp.lisp
Run Code Online (Sandbox Code Playgroud)

然后,在我输入后:

* (quicklisp-quickstart:install)
Run Code Online (Sandbox Code Playgroud)

我得到以下模糊错误:

debugger invoked on a SB-INT:SIMPLE-READER-PACKAGE-ERROR in thread
#<THREAD "main thread" RUNNING {240866C1}>:
  Package QUICKLISP-QUICKSTART does not exist.

    Stream: #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {22402A19}>

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.
Run Code Online (Sandbox Code Playgroud)

我用Google搜索了"Quickstart不存在"错误,但没有任何内容.我是一名Python程序员,我真的很想学习Lisp,这个错误让我在开始时对付的方式太过神秘了.

lisp windows sbcl common-lisp quicklisp

2
推荐指数
1
解决办法
1230
查看次数

如何让Emacs/Slime/SBCL识别quicklisp包

我想让Emacs,SLIME和quicklisp正常合作.我有以下环境设置:

  • 安装了Emacs
  • 在Emacs中安装了SLIME
  • 已安装SBCL
  • 安装quicklisp
  • (quicklisp-quickstart:install)在SBCL中运行
  • (ql:add-to-init-file)在SBCL中运行
  • (ql:quickload "quicklisp-slime-helper")在SBCL中运行
  • (ql:quickload "cl-csv")在SBCL中使用安装的包cl-csv
  • 添加(setq inferior-lisp-program "sbcl")到.emacs
  • 添加(load (expand-file-name "~/quicklisp/slime-helper.el"))到.emacs
  • 重启了一切

我有一个test.lisp文件,首先(ql:quickload "cl-csv")加载包并使用它.当我将文件加载到Emacs并运行SLIME,然后尝试使用它编译它slime-compile-and-load-file,我得到SBCL中的错误Package CL-CSV does not exist.

我错过了什么让这些作品正确地协同工作?

sbcl common-lisp asdf slime quicklisp

2
推荐指数
2
解决办法
1192
查看次数

如何分发asdf/quicklisp依赖项以及使用Embeddable Common Lisp编译的应用程序?

我已经尝试过这个示例ECL存储库asdf示例,它工作正常,但它没有任何asdf依赖项.如果我添加

:依赖(#:inferior-shell)

到example.asd然后运行已编译的独立可执行文件会出现错误:

Condition of type: SIMPLE-PACKAGE-ERROR
There exists no package with name "ASDF/DRIVER"
No restarts available.
Run Code Online (Sandbox Code Playgroud)

导致此错误的原因是什么,以及在ECL上处理asdf依赖项的惯用方法是什么?

lisp common-lisp asdf ecl quicklisp

2
推荐指数
1
解决办法
363
查看次数


如何在常见的lisp中进行动态加载(Load)

我的以下代码片段将给出SB-INT:SIMPLE-READER-PACKAGE-ERROR; 我知道这是因为当REPL读取代码时,尚未定义包"quicklisp-quickstart"; 但是软件包IS在"quicklisp.lisp"中定义.

如何使以下代码有效?或者我如何告诉常见的lisp阅读器这个包将在动态加载的文件中定义?

* (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
                                       (user-homedir-pathname))))
  (if (probe-file quicklisp-init)
    (load quicklisp-init)
    (progn
      (load "quicklisp.lisp")
      (quicklisp-quickstart:install))))

debugger invoked on a SB-INT:SIMPLE-READER-PACKAGE-ERROR in thread
#<THREAD "main thread" RUNNING {100299C6A3}>:
  Package QUICKLISP-QUICKSTART does not exist.

    Stream: #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {100017F893}>

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.
Run Code Online (Sandbox Code Playgroud)

lisp sbcl common-lisp quicklisp

2
推荐指数
1
解决办法
213
查看次数

每次重新启动时都必须重新安装Quicklisp软件包

我正在编写一个(SBCL)Common Lisp程序,该程序在文件顶部具有以下行:

(defpackage :my-package
  (:use :cl :cl-who :hunchentoot :parenscript))
Run Code Online (Sandbox Code Playgroud)

我在MacOS上运行Emacs 25,SBCL和SLIME。

每当我评估上面的行时,总会首先收到此错误:

名称“ CL-WHO”不指定任何软件包。[SB-KERNEL类型的条件:SIMPLE-PACKAGE-ERROR]

然后,我运行(ql:quickload "cl-who")并观看CL-WHO软件包的安装。对于其他两个包,我重复一遍。一旦完成此操作,就可以成功评估表单。

问题是,每次我重新启动Emacs(或Lisp进程,在这种情况下我都认为大致相同)时,都需要这样做。为什么当我使用Quicklisp安装某些东西时,下一个会话没有“记住”它?难道我做错了什么?

这是配置问题还是对它应该如何工作的普遍误解?

sbcl common-lisp quicklisp

2
推荐指数
1
解决办法
346
查看次数

如何加载和使用quicklisp程序

我已经设置了quicklisp(使用最新的SBCL)并完成了

* (ql:quickload "draw-cons-tree")
Run Code Online (Sandbox Code Playgroud)

我得到答复

To load "draw-cons-tree":
  Load 1 ASDF system:
    draw-cons-tree
; Loading "draw-cons-tree"

("draw-cons-tree")
Run Code Online (Sandbox Code Playgroud)

我检查了quicklisp目录,发现目录已下载,基本上就是这些内容。那么,我如何draw-cons-tree在已打开的SBCL REPL中使用它呢?github网站上说:

* (draw-tree '(a b (c nil 1)))
Run Code Online (Sandbox Code Playgroud)

应该产生

[o|o]---[o|o]---[o|/]
 |       |       |      
 A       B      [o|o]---[o|o]---[o|/]
                 |       |       |      
                 C      NIL      1      
NIL
Run Code Online (Sandbox Code Playgroud)

但我正在

debugger invoked on a UNDEFINED-FUNCTION in thread
#<THREAD "main thread" RUNNING {10005385B3}>:
  The function COMMON-LISP-USER::DRAW-TREE is undefined. 
Run Code Online (Sandbox Code Playgroud)

我在这里想念什么?我对quicklisp的唯一其他实际体验是史莱姆,它.el在Emacs中有一个特定文件可以调用来使史莱姆运行。我是否需要深入查看目录

~/quicklisp/dists/quicklisp/software/draw-cons-tree-20131003-git/draw-cons-tree.lisp
Run Code Online (Sandbox Code Playgroud)

每次我要使用它并加载野兽?我尝试了一下,至少令我感到奇怪的是,我得到了重新定义函数的警告列表,一个是draw-tree。所以我的REPL知道draw-tree但不是吗?我在这里想念什么?

sbcl common-lisp quicklisp

2
推荐指数
1
解决办法
176
查看次数

在Common Lisp中如何确定系统包含的包

每次我通过Quicklisp安装系统时,我总会发现自己正在搜索基本软件包的名称,普通用户会感兴趣,因为它会导出要播放的"最终产品"API.因此,任何人都需要知道它的名字并在REPL上发出命令:

(use-package :package)
Run Code Online (Sandbox Code Playgroud)

为了在REPL上玩它.

是否有一种快速简便的方法来确定由Quicklisp加载的系统所包含的软件包,而无需搜索过时的文档.

packages common-lisp quicklisp

1
推荐指数
1
解决办法
172
查看次数

管理Common Lisp中的依赖关系

我从Python世界来到Lisp,它基本上运行virtualenvpip作为创建容器和管理依赖项的方式.

目前,我正在更详细地学习Common Lisp,并想知道它的社区理念是如何管理依赖关系和包.

例如,如果我运行:

(ql:quickload '(cl-who hunchentoot parenscript elephant fiveam css-lite cl-json))

据我所知,所有这些软件包都将安装在quicklisp目录中的某个位置.(我不确定它们的安装形式或位置).

问题是,是否有必要安装不同版本的软件包,具体取决于手头的代码.也就是说,那个人做了什么?他只是依靠包的向后兼容性吗?

Common Lisp世界如何处理这个问题?

lisp python common-lisp dependency-management quicklisp

1
推荐指数
1
解决办法
151
查看次数

关于lisp软件包管理器的初学者问题:quicklisp是答案还是需要考虑其他事项?

我正在运行Clozure Common Lisp,并进展到想要开始使用库的地步。我在Lisp中看到该功能在软件包中。谷歌搜索我遇到了QuickLisp软件包管理器。似乎很容易,但是在这样做之前,我需要建议。是QuickLisp首选的软件包,还是有软件包管理器?

这是给一个人自学的口吻。我没有正在进行的重大项目。寻找“引起口齿不清的深层编程见解。”(R)

common-lisp quicklisp

1
推荐指数
1
解决办法
49
查看次数

在eval-when内部快速加载

这是一个奇怪的情况.我有这个代码:

(eval-when (:compile-toplevel :load-toplevel :execute)
  (ql:quickload "cffi-grovel")
  (setf cffi-grovel::*cc* "mpicc")) ; <--- this is the line it complains about.
Run Code Online (Sandbox Code Playgroud)

我相信我必须cffi-grovel在设置cffi-grovel::*cc*变量之前加载包.当这个表单从SLIME执行时它可以工作,但是当它由SBCL直接加载时它不起作用,这是输出:

$ sbcl --noinfo
* (ql:quickload "cl-mpi")

debugger invoked on a LOAD-SYSTEM-DEFINITION-ERROR in thread
#<THREAD "main thread" RUNNING {10029C0E43}>:
  Error while trying to load definition for system cl-mpi from pathname
  /home/wvxvw/quicklisp/local-projects/cl-mpi/cl-mpi.asd:
     READ error during COMPILE-FILE:

       Package CFFI-GROVEL does not exist.

         Line: 6, Column: 25, File-Position: 264

< restarts ... >

* (ql:quickload "cffi-grovel")
To load "cffi-grovel":
  Load …
Run Code Online (Sandbox Code Playgroud)

common-lisp quicklisp

0
推荐指数
1
解决办法
371
查看次数