问题标签 [quicklisp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
raspberry-pi - 使用命令行参数调用 CCL + Quicklisp 脚本作为可执行文件并实现所需的输出
在发现了一种非常简单的方法来使用我的新 Raspberry Pi 2(运行 Raspbian)从命令行观看 YouTube 视频后,只使用容易获得的软件包,即:
我立即想要一种以这种方式观看整个 YouTube 播放列表的方法。所以我认为这是在Common Lisp中拼凑解决方案的完美借口:)
我的解决方案(想象中称为 RpiTube)是一个脚本,当给定 YouTube 播放列表的 URL 时,它会搜索页面的 HTML 源并提取其中包含的视频的 URL。然后,我可以将这些 URL 传递给 Bash 脚本,该脚本最终一个接一个地为每个视频单独调用上述命令。Common Lisp 脚本本身是完整的并且可以工作,但是我很难使用 URL 作为命令行参数来调用它。这主要是因为我对 Quicklisp、Lisp 包和从 Common Lisp 代码创建可执行文件还很陌生。
我正在运行带有 Quicklisp 的Clozure Common Lisp (CCL)(按照Rainer Joswig 的说明安装)。我在下面包含了完整的代码。它可能有点低效,但令我惊讶的是,即使在 Raspberry Pi 上它也能相当快地运行。(建议的改进表示赞赏。)
首先,我尝试将以下行添加到脚本中
然后运行
这使:
当我至少预计 ./rpitube.lisp 不会出现在这个无法识别的参数列表中时。我知道在 Clozure CL 中,为了将命令行参数传递给REPL会话而不受影响,我必须用双连字符将它们与其他参数分开,如下所示:
但是像这样调用脚本显然会让我在脚本运行后进入 REPL,这是我不想要的。此外,Quicklisp 加载信息和进度条会打印到终端,这也是我不想要的。(顺便说一句,正如 Rainer 所建议的,我没有将 Quicklisp 添加到我的 CCL 初始化文件中,因为我通常不希望额外的开销,即 Raspberry Pi 上几秒钟的加载时间。我不确定这是否相关)。
然后我决定尝试通过运行来创建一个独立的可执行文件(一旦加载了上面的代码):
并从这样的外壳调用它:
这使:
这似乎是一个改进,但我仍然做错了什么。我是否需要通过创建我自己的需要 drakma、cl-html-extract 和 split-sequence 的 asdf 包来替换与 Quicklisp 相关的代码,并使用in-package
等加载它?我之前在另一个项目中创建了自己的包 - 特别是因为我想将我的代码拆分为多个文件 - 它似乎可以工作,但我仍然通过ql:quickload
而不是加载我的包in-package
,因为后者似乎从未工作过(也许我应该将其作为一个单独的问题提出)。在这里,rpitube.lisp 代码非常短,似乎没有必要为它创建一个完整的 quickproject 和包,特别是因为无论如何我希望它是一个独立的可执行文件。
所以:我如何更改脚本(或其调用),以便它可以接受 URL 作为命令行参数,可以非交互方式运行(即不打开 REPL),并且只打印所需的输出到终端 - 以空格分隔的 URL 列表 - 没有任何 Quicklisp 加载信息?
lisp - 构建大型 Lisp 应用程序
我目前正试图围绕包、系统和公司。
我现在已经阅读了包、系统、模块、库 - WTF?几次,我想我仍然很难把它做好。
如果我只是想将 Lisp 源文件拆分为两个文件,其中一个应“使用”另一个 - 我该怎么做?我需要为此建立一个系统吗?我应该使用模块吗?……?我来自 Node.js 背景,你可以简单地说
获取对文件中导出内容的引用foo.js
。在 Lisp 中与此最接近的等价物是什么?
我知道ASDF用于系统,并且它被捆绑为Quicklisp的一部分,至少根据其文档:
ASDF 捆绑了所有最新版本的活动 Common Lisp 实现以及 quicklisp […]
好的,Quicklisp 是用于库的,但它们的关系是什么?Quicklisp 是不是其他语言中的“包管理器”之类的东西?如果是这样,那么 ASDF 究竟提供了什么?
很抱歉有这么多问题,但我认为它只是说明了我必须理解如何构建 Lisp 应用程序的麻烦。任何帮助将不胜感激 :-)
lisp - Quicklisp 覆盖默认系统
我有一个稍微修改过的版本,cl-json
用于实现不佳的服务器解析器。当我尝试(ql:quickload :cl-json)
它时,自然会加载他们存储在服务器上的文件,而不是存储在本地硬盘上的修改版本。
我考虑把它变成一个 ASDF 模块,但是我所有的源代码都有引用(json:decode...)
,这样就不再起作用了。
我如何告诉 quicklisp “不要从服务器下载,而是使用那里的目录”?
package - SBCL - 加载时包锁定所有 Quicklisp 库?
我可以在 Quicklisp 加载库时自动打包锁定库吗?我希望每个包裹都被锁定。我可以这样做吗?
common-lisp - 如何让 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
使用Package CL-CSV does not exist
.
为了让这些部分正常工作,我错过了什么?
common-lisp - 加载 quicklisp 包以在另一个 lisp 文件中使用
我下载了一个大型软件项目FriCAS,我从源代码编译并使用 SBCL。这只是使用 GNU .configure 的问题——我是一个完整的 Lisp 新手。
但是,为了添加一些进一步的功能,我已经非常仔细地按照说明安装了 quicklisp 和一些额外的包。到目前为止,一切都很好。
这是我的问题:我正在尝试编译一个外部 lisp 文件以在系统中使用。我需要让 quicklisp 及其包对编译器可见。因此,我将 .sbclrc 文件复制到了 lisp 文件的顶部:
我跟着这个
我已经安装f2cl-lib
了 quicklisp。但是,我的编译器(在 FriCAS 内)立即中止
我在这里有点难过 - 可能缺少一些微不足道和明显的东西,但正如我从新手的角度说的那样,我不知道它是什么。
lisp - <> lisp - matlisp
我对 Common Lisp 很陌生,在尝试使用我加载的包 Matlisp 时遇到了一个问题(ql:quickload:matlisp)。
例如,当我尝试使用该包时,只需执行:
我总是收到一条错误消息:
“不会(是的,你没看错,buster!)为抽象张量类“TENSOR DOUBLE-FLOAT STRIDE-ACCESSOR SIMPLE-ARRAY”生成方法。” [TENSOR-ABSTRACT-CLASS 类型的条件]
我尝试过的所有 matlisp 函数都会出现问题。我可能遗漏了一些非常基本的东西,或者这会是包裹的问题吗?
我在 Emacs 25.0.50 上运行 slime,我的 Lisp 实现是 SBCL 1.2.11,如果这些信息相关的话。
任何帮助是极大的赞赏!
这里是回溯:
lisp - 如何分发 asdf/quicklisp 依赖项以及使用 Embeddable Common Lisp 编译的应用程序?
我已经尝试过这个示例ECL 存储库 asdf 示例,它工作正常,但它没有任何 asdf 依赖项。如果我添加
:depends-on (#:inferior-shell)
到 example.asd 然后运行编译的独立可执行文件会出现此错误:
是什么导致了这个错误,处理 asdf 对ECL的依赖的惯用方法是什么?
git - 从 GitHub 检索 Common Lisp 项目依赖项
我有一个 Common Lisp 项目,它依赖于托管在 GitHub 上的 C/C++ 库。我需要克隆、配置和创建此依赖项才能使我的项目正常工作,我更愿意在 Common Lisp 中执行此操作,而不是提供 shell 脚本。
为 Common Lisp 项目自动执行此操作的最佳方法是什么?我尝试使用 INFERIOR-SHELL 复制我的 shell 命令,但它在git clone
.
quicklisp - quicklisp 不执行任何下载验证吗?
quicklisp 不执行任何下载验证吗?浏览源代码,我没有看到任何迹象表明它会进行任何校验和或加密验证,并且它似乎通过 http 下载所有内容。