问题标签 [ansi-common-lisp]

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.

0 投票
1 回答
840 浏览

common-lisp - 在 common lisp 中访问向量

在上面的代码片段中,我们创建了一个长度为 4 的向量并通过 (svref vec ) 访问它的元素。

在上面的代码片段中,我们使用向量函数创建了一个长度为 5 的向量。我们如何访问这个向量的元素?svref 如何用于这个向量?

0 投票
1 回答
446 浏览

lisp - Common Lisp 中的特殊声明和变量

我正在阅读 Common Lisp Hyperspec,并且正在努力理解特殊声明背后的概念。

即,什么是特殊变量,我们为什么要它们?我收集到我们可以通过使用特殊声明以某种方式更改变量在编译器眼中属于哪个范围,但细节让我难以理解。

有人可以解释一下并举一些例子吗?

0 投票
2 回答
401 浏览

docker - 在 Docker 映像中安装 Quicklisp 库

是否有用于在 Docker 上安装 cl-json(或其他 Quicklisp 库)的 Dockerfile?我见过的大多数安装说明都需要用户输入没有 --noinput 标志的命令,因此很难通过 Dockerfile 进行安装。

此外,许多说明似乎已过时或引用断开的链接和不存在的资源。使用 Dockerfile 以与 Quicklisp 等一致的方式安装它会很方便。

0 投票
4 回答
207 浏览

common-lisp - 有没有办法在 Common Lisp 中使用迭代并同时避免副作用?

我写了两个版本的 lisp 函数。两者之间的主要区别在于,一个是通过递归完成的,而另一个是通过迭代完成的。

这是递归版本(没有副作用!):

这是迭代版本(有副作用):

据我所知,它们都有效。但我真的很想避免迭代版本中的副作用。我想回答两个问题:

  1. 是否可以避免副作用并保持迭代?
  2. 假设#1 的答案是肯定的,那么最好的方法是什么?
0 投票
3 回答
255 浏览

common-lisp - 如何在 Common Lisp 中创建函数指针数组?

我有一个程序需要具有一系列可互换的功能。

在 c++ 中,我可以做一个简单的typedef陈述。然后我可以调用该列表中的一个函数function[variable]。如何在 Common Lisp 中做到这一点?

0 投票
1 回答
85 浏览

recursion - 遍历字符串以找到给定左括号的右括号的递归函数

我正在尝试创建一个返回给定左括号的右括号的函数,我已经可以做到这一点,但是在我的第一次尝试中,我不明白我的错误在哪里,我想知道在未来,这是我的第二个功能,它运行良好(看到它可以让我在第一次尝试中尝试的内容更轻松):

我知道有其他方法可以做到这一点,我可以使用 cl-ppcre,但这不是我的问题,我的问题是我在下面的递归函数中的错误在哪里:

0 投票
1 回答
66 浏览

lisp - GCL中的条件如何处理?

handler-case是处理 Common Lisp 条件的关键,但 Ubuntu 18.04 上的 GCL 2.6.12 认为它是一个未定义的函数:

对于handler-bind.

GCL 手册中唯一明显的与处理条件或错误相关的功能是 GCL-specific universal-error-handler

在 GCL 中如何处理条件,最好以其他 Lisp 支持的方式?

0 投票
0 回答
74 浏览

path - 处理支持 URL 的跨平台文件路径的推荐方法?

我对 Lisp 并不陌生,但对 CL 并不陌生,并且对文件和目录路径处理有点困惑。我需要:一种完全跨平台的方法来处理可以在 URL 中指定并存储在数据库中(最好是文本)的文件和目录路径。

当前方法:使用 将文件路径存储为文件 URL QURI,严格使用 / Unix 样式的路径,并可序列化为 URL 字符串。当我需要访问本地文件时,这些 URL 路径将转换为本地操作系统特定的文件路径。所以我使用UIOP:parse-unix-namestring转换为斜线路径并QURI构造 URL。

问题:文档UIOP说这unix-namestring不适合一般平台特定的路径,我需要将 unix 路径名转换为字符串以将其存储在数据库中。此外,大多数路径都是相对的,但其中一些对于外部资产可能是绝对的,UIOP文档还说parse-unix-namestring不适合绝对路径。

问题:我发现的每个教程都推荐UIOP. 但是,在数据库中以跨平台方式存储文件夹和文件的路径的正确方法是什么?我要做什么可怕的事情了吗?我应该摆脱使用 URL 来存储资产位置的想法吗?它的优点是可以很好地推广到其他类型的位置,例如 ftp 和 http 服务器上的文件。如果我确保所有路径都是相对的并继续使用 UIOP,我是否安全?或者,有没有更好的方法来做到这一点?

它适用于各种(现代)文件系统,具有网络卷等,这一点非常重要。