问题标签 [on-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 投票
3 回答
85 浏览

common-lisp - (apply #'somefunc args) 和 (somefunc args) 之间的区别

在阅读 Paul Graham 的On Lispfunction时,我在第 4 章实用函数中发现了以下内容。

我想了解以下功能有什么区别,略有不同:

在这第二个版本中,mkstr直接用args参数进行评估,但我不明白为什么我们需要(apply #'mkstr ...)在原始版本中这样做。

0 投票
1 回答
134 浏览

common-lisp - “在 Lisp 上”:`(abc) vs '(abc) vs (list 'a 'b 'c)

On Lisp(第 84 页)中,格雷厄姆说

‘(a b c)(不带逗号)等于’(a b c)

然后说

反引号列表等效于对带有引用元素的列表的调用。
也就是说,‘(a b c)(不带逗号)等于(list ’a ’b ’c)

一个陈述必须是错误的,因为'(a b c)并且(list 'a 'b 'c)似乎不相等。后者是一个新的 consed 列表(可以安全地修改),而前者是一个常量——或者至少规范允许编译器这样对待它。

所以也许这是一个非常挑剔的问题,但是反引号列表(不带逗号)‘(a b c)是否等于'(a b c)或等于(list 'a 'b 'c)

0 投票
1 回答
193 浏览

elisp - Emacs Lisp 中的尾递归展平函数

我正在阅读 Paul Graham 的On Lisp,并尝试在 Emacs Lisp 中实现这些功能。其中之一是扁平化:

然而由于某种原因,Paul Graham 给出的实现在 Emacs Lisp 上不起作用(总是返回 nil):

和ELisp的动态绑定有关系吗?这段代码有什么问题?