标签: quicklisp

有没有办法捕捉到 Common Lisp 包被定义的时刻?

我想收集在 ASDF 系统加载期间定义的所有包。

已经尝试过:

  1. 使用(list-all-packages)系统加载前后的区别,但不是很方便,因为有些系统可以作为我正在检查的系统的依赖项加载,我需要进行集合提取。

  2. 试图定义一个initialize-instance :after ((package package) &rest initargs)方法,但在defpackage评估表单时它不会被调用。

此外,当我快速加载 ASDF 系统时,我会看到[package dexador]它的输出。quicklisp 如何做到这一点?

common-lisp asdf quicklisp

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

如何避免为常见的lisp项目加载多个asdf文件?

在完成Peter Seibel的" Practical Common Lisp"一书时,我在理解如何与Emacs的SLIME和quicklisp一起处理Common Lisp包系统时遇到了一些困难.他提供的项目具有以下结构:

  • spam.lisp在包中com.gigamonkeys.spam,依赖于另外两个包,cl-ppcrecom.gigamonkeys.pathnames.
  • pathnames.lisp 在包中 com.gigamonkeys.pathnames
  • spam.asd,它描述了com.gigamonkeys.spam包的依赖关系
  • pathnames.asd,它描述了com.gigamonkeys.pathnames包的依赖关系

我目前发现构建最终目标spam.lisp的唯一方法是:

  1. pathnames.asd使用SLIME(C-x C-k)编译并加载文件
  2. com.gigamonkeys.pathname通过(asdf:operate 'asdf:load-op 'spam) 在REPL 键入来加载包
  3. cl-ppcre通过(ql:quickload "cl-ppcre")在REPL 键入来加载包
  4. spam.asd使用SLIME 编译并加载文件
  5. com.gigamonkeys.spam通过(asdf:operate 'asdf:load-op 'spam)在REPL 键入来加载包

这似乎是使用单个文件中定义的函数所需的大量工作(spam.lisp) - 我必须做错事.是否有一些方法可以spam.lisp用更少的命令加载和递归地加载它的依赖项?

common-lisp slime quicklisp

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

HOWTO Common Lisp包(库)的定义和用法?

我已经在一些Lisp源文件中开发了一些Common Lisp函数,我希望这些函数可以轻松地用于我编写的其他函数,或者如果我认为它们对其他人有用,则可以在github上使用.现在,我刚刚将它们放在一些预先定义的文件夹中并使用(require "/path/to/my/modules/module.lisp").

我想要了解什么是正确的(规范的Lisp)方法来定义模块的Lisp库.问题的第二部分是如何使用它们(我是否定义了它们,或者我是否从其他人那里获得了它们).

我一直在阅读了很多关于defpackagedefsystemasdf.但我读过的所有内容似乎都集中在这项任务的某个特定角落.我在查看自定义模块创建,部署和使用的大局方面遇到了很多麻烦.所以假设我面前有一个Lisp环境(CLISP或SBCL)以及一个或多个.lisp文件,我想制作一个软件包或库,是否有一个文件可以解释哪些步骤需要这样做?这可能是我已经读过的东西,但由于不理解上下文而没有跟踪.我所读到的关于ASDF的内容在功能上看起来似乎是我所追求的,但我不知道ASDF是否是我唯一的选择,或者它是否恰好是事实上的标准以及大多数其他人使用的,或者随你.我在SBCL玩了一下,并且不确定我是否正确使用它,并且没有看到如何在CLISP中设置它的信息.所以我想要了解什么是这个任务的中间,香草方法.

我知道这是一个庞大,草率的子问题.再说一次,如果有一些很好的参考资料,我可以阅读.我只是在查看它应该如何工作,以及是否有任何"最佳"方法,或者在Lisp中是否有点"狂野西部"选择图书馆时遇到一些麻烦 - 管理员 - 你喜欢的方法.我做谷歌的事情并阅读任何看起来相关的东西,但我的大脑正在全力以赴.

谢谢.

lisp common-lisp asdf package quicklisp

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

Common Lisp:asdf取决于特定版本

我想知道如何依赖ASDF系统中特定版本的库?

(asdf:defsystem #:my-system
    :serial t
    :description "Describe my-system here"
    :author "My Name <my.name@example.com>"
    :license "Specify license here"
    :depends-on (#:hunchentoot
                 #:cl-who)
    :components ((:file "package")
                 (:file "dispatch")))
Run Code Online (Sandbox Code Playgroud)

以上系统依赖于hunchentoot和cl-who.据我所知,将使用两个库的最新版本.如何指定使用cl-who 1.0.5(例如)?

提前致谢.

common-lisp asdf dependency-management quicklisp

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

Quicklisp:使用加载的库

我已经设置了Quicklisp以便在SBCL运行时运行,并将以下行添加到我正在尝试使用该priority-queue库的文件顶部(正如我之前的问题的回答中所建议的,Common Lisp的优先级队列?).但是,当我尝试使用它时,我从SBCL收到错误,说priority-queue没有定义函数!我错过了什么?

作为参考,我试着写这样的东西:

(ql:quickload "priority-queue")

(defparameter *heap* (make-pqueue #'<))
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,说make-pqueue没有定义.

common-lisp quicklisp

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

使用Quicklisp安装CL + SSL时"即无法加载任何替代方案",即使在安装open ssl之后也是如此

[2]> (ql:quickload "cl+ssl")
To load "cl+ssl":
  Load 1 ASDF system:
    cl+ssl
; Loading "cl+ssl"

*** - Unable to load any of the alternatives:
      ("libssl32.dll" "ssleay32.dll")
Run Code Online (Sandbox Code Playgroud)

在我的头撞墙后三天,我问我关于堆栈溢出的第一个问题.如果运气不好,它将不会被删除,并且随着堆积的增加,将有一个解决方案.

在尝试通过quicklisp安装Humbler时,CL + SSL(几个依赖项之一)抱怨"无法加载任何替代方案:(libss132.dll"ssleay32.dll")

我很快就知道我必须安装OpenSSL dll,这很容易.我还了解到,我可能必须将CFFI指向我的dll方向,并且我必须确保获得64位版本.但是这个错误仍然存​​在.

在Win 7 64上使用Clisp 2.47

我已经尝试过的事情:

  • 安装open ssl dlls
  • 安装VS 2008 Redist
  • 把这些dll放在system32中
  • 将它们放在与Clisp .exe相同的文件夹中
  • 将它们放入OpenSSL创建的安装文件夹中
  • 使用"使用另一个库"重新指向每个dll的确切位置
  • 将各种位置推送到CFFI:Foreign-Library-Directories列表

    中断1 CL + SSL [3]>:R2输入新值(未评估):("C:\ OpenSSL-Win64\libssl32.dll")*** - 无法加载外部库(LIBSSL32.DLL-8079).FFI:OPEN-FOREIGN-LIBRARY:无法打开库"C:\ OpenSSL-Win64\libssl32.dll"

  • 卸载然后安装所有不同的OpenSSL版本

  • 可用作管理员运行Clisp删除Quicklisp
  • CL + SSL的缓存在SBCL和Lispworks中执行上述所有步骤
  • 将其关闭再打开

我之前从未问过有关堆栈溢出的问题.然后我再也没有花三天时间试图获得依赖加载.我中风前请帮忙.

ssl openssl common-lisp asdf quicklisp

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

为什么ql:quickload会忽略错误但是asdf:load-system不是?

我发现有时ql:quickload只是默默地跳过严重错误,如:

;Compiler warnings for "home:common-lisp;mito-email-auth;src;models.lisp.newest" :
;   In SEND-CODE: In the form ("??? ????? ?? ???? [Skazorama.ru](~A), ????????? ?? [???? ??????](~A)" URL URL), "??? ????? ?? ???? [Skazorama.ru](~A), ????????? ?? [???? ??????](~A)" is not a symbol or lambda expression.
Run Code Online (Sandbox Code Playgroud)

(我忘了将宏导入包中.这个宏应该将代码转换成有用的东西).

但是当我使用时加载此库时asdf:load-system,会弹出一个错误并可用于调试.

你是如何忍受这种行为的?

common-lisp asdf quicklisp

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

在quicklisp项目上使用buildapp时如何修复asdf错误

我最近一直在做我的第一个quicklisp项目,我想分享一下。我已将放在github上,但并非每个人都安装了emacs + slime + quicklisp,因此我想制作一个可执行文件,可以将其放入代码中。

为此,我正在使用buildapp并遵循 stackoverflow答案中列出的步骤。

$ sbcl --no-userinit --no-sysinit --non-interactive \
       --load ~/quicklisp/setup.lisp \
       --eval '(ql:quickload "ltk-colorpicker")' \
       --eval '(ql:write-asdf-manifest-file "quicklisp-manifest.txt")'

$ buildapp --output out \
           --manifest-file quicklisp-manifest.txt \
           --load-system ltk-colorpicker \
           --entry colorpicker
Run Code Online (Sandbox Code Playgroud)

运行这些命令后,出现以下错误:

Fatal INPUT-ERROR-IN-LOAD:
  READ error during LOAD:

    The symbol "*SYSTEM-DEFINITION-SEARCH-FUNCTIONS*" is not external in the ASDF/FIND-SYSTEM package.

      Line: 16, Column: 90, File-Position: 15267

      Stream: #<SB-INT:FORM-TRACKING-STREAM for "file /home/nathan/quicklisp/local-projects/ltk-colorpicker/dumper-2SKVI5f7.lisp" {1001B70F83}>
Run Code Online (Sandbox Code Playgroud)

这里的主要问题是我什至不知道如何开始修复它。我已经看到过这个 gibhub问题,但这与Homebrew的问题有关,甚至从未提及buildapp。一切都很混乱。我希望我能得到一些帮助。

预先感谢您的任何答案。

common-lisp asdf quicklisp

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

如何在 Common Lisp 中使用库?

我是 Common Lisp 的初学者,我想使用一个库。

我找不到加载/要求/使用模块的一个简单示例。我已经像这样安装了 cl-ppcre :

$ sbcl --non-interactive --eval '(ql:quickload "cl-ppcre")'
To load "cl-ppcre":
  Load 1 ASDF system:
    cl-ppcre
; Loading "cl-ppcre"
..

Run Code Online (Sandbox Code Playgroud)

但我不知道如何实际使用它。我尝试过以下方法和其他十几种方法,但没有一种有效。

$ sbcl --noinform --non-interactive --eval '(progn (require "cl-ppcre") (cl-ppcre:split "\s+" "1 2 3"))'
Unhandled SB-INT:SIMPLE-READER-PACKAGE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                          {1004DB8073}>:
  Package CL-PPCRE does not exist.

    Stream: #<dynamic-extent STRING-INPUT-STREAM (unavailable) from "(progn (...">

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1004DB8073}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-INT:SIMPLE-READER-PACKAGE-ERROR "Package ~A does not exist." {1003640A83}> #<unused argument> :QUIT T) …
Run Code Online (Sandbox Code Playgroud)

common-lisp asdf quicklisp

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

无法使用系统中定义的lisp包

我试图使用lisp代码制作可执行文件.但是我根本无法编译 lisp文件,因为hellowolrd在加载helloworld系统 之前没有包

;; test.lisp
(asdf:load-system :helloworld)

(defun main()
  (helloworld:start))
Run Code Online (Sandbox Code Playgroud)


当然,我制作了helloworld系统并将其放入~/quicklisp/local-projects/.helloworld系统成功加载没有错误.

;; ~/quicklisp/local-projects/helloworld/helloworld.asd
(asdf:defsystem helloworld 
  :version "1.0"
  :components ((:file "package")))

;; ~/quicklisp/local-projects/helloworld/package.lisp 
(defpackage :helloworld
  (:use :common-lisp :asdf)
  (:export :start))

(in-package :helloworld)
(defun start()
  (format t "Welcome, ASDF"))
Run Code Online (Sandbox Code Playgroud)


我想编译test.lisp没有显式加载.我也试过use-packagedefpackage,但失败了.

;; test.lisp
(asdf:load-system :helloworld)
(use-package :helloworld)

(defun main()
  (helloworld:start))


;; test.lisp
(asdf:load-system :helloworld)

(defpackage :test
  (:use :cl :asdf)
  (:export :main))

(in-package :test)

(defun main()
  (helloworld:start)) …
Run Code Online (Sandbox Code Playgroud)

lisp sbcl common-lisp asdf quicklisp

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

标签 统计

common-lisp ×10

quicklisp ×10

asdf ×8

lisp ×2

dependency-management ×1

openssl ×1

package ×1

sbcl ×1

slime ×1

ssl ×1