问题标签 [land-of-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 投票
4 回答
4863 浏览

lisp - Lisp“关联列表”和Java Map 这样的键值映射之间有什么关系?

我正在阅读《Land of Lisp》(顺便说一句,这是我读过的最好的技术书籍之一),我遇到了“关联列表”:

Lisp 中的关联列表与 Java 的 Map(键值绑定)的概念是否相同?

对于living-room键,怎么可能有多个值?为什么要用列表括起来?

0 投票
1 回答
285 浏览

functional-programming - 将一个函数分成多行

以下是令人惊叹的书籍“Lisp 之国”中示例的一些源代码:

由于我没有Lisp 的本能,我发现将一个方法分成多行(作为命令式样式)然后尝试将其变形为函数式样式很有用。

你能帮我把make-edge-list函数分成多行吗?

0 投票
2 回答
936 浏览

lisp - Lisp 示例冗余的土地?

我读过很多关于Lisp的好东西,所以我想我可以通过它来看看有什么可看的。

(评论是我的)
(仅供参考——方法签名是(list-of-symbols bool-whether-to-caps bool-whether-to-treat-literally)但作者将这些缩短为(lst caps lit).)

但无论如何,这里的问题是:
(cond... (lit ...) ((or caps lit) ...))在其中。我的理解是,这将转化为if(lit){ ... } else if(caps || lit){...}C 风格的语法。那么 or 语句不是多余的吗?(or caps lit)如果 caps 是,是否会调用该条件nil

0 投票
2 回答
1380 浏览

f# - 消除我通过like、monads和其他东西传递的显式状态

我正在阅读F#中的 Lisp Land of Lisp一书(是的,很奇怪,我知道)。对于他们的第一个示例文本冒险,他们使用了全局变量突变,我想避免它。我的 monad-fu 很弱,所以现在我正在做这样的丑陋状态传递:

如何分解显式状态以使其更漂亮?(假设我可以访问 State monad 类型,如果它有帮助的话;我知道 F# 中有它的示例代码。)

0 投票
2 回答
285 浏览

clojure - 代码在 REPL 中运行,但如果保存到文件中则不会

我正在尝试创建一个基于文本的 Clojure 游戏(灵感来自 Lisp 之国)。

代码在 REPL 中运行,但如果我将代码保存到文件并尝试运行:

我有:

线程“main”java.lang.IllegalArgumentException 中的异常:传递给的 args (1) 数量错误:user$describe-location (wizard-game.clj: 0)

我做错了什么?
这是文件:http ://dl.dropbox.com/u/3630641/wizard-game.clj

0 投票
2 回答
1127 浏览

clojure - 在 Clojure 中重写 Lisp 之国的精灵游戏

我正在尝试从“Land of Lisp”重写向导游戏 http://landoflisp.com/wizards_game.lisp

尝试时:

我得到了这个例外:

线程“主”java.lang.RuntimeException 中的异常:java.lang.IllegalArgumentException:不知道如何从以下位置创建 ISeq:clojure.lang.Symbol (wizard-game.clj:0)

我还没有 Lispy 的眼睛,我做错了什么?

0 投票
6 回答
2332 浏览

lisp - Lisp括号问题

这段代码来自书:“Land Of Lisp”第一个版本来自书。当我阅读它时,我认为在第二行的“at-loc-p”和第三行的 loc 之后有括号“(”不是必需的。

但是当我测试这个时,

结果出来了:

AT-LOC-P 中的必​​需参数与 lambda 列表 (CCL::FUNCNAME CCL::LAMBDA-LIST &BODY CCL::LABELS-FUNCTION-BODY) 不匹配。
[CCL::SIMPLE-PROGRAM-ERROR 类型的条件]

我不太明白。需要帮忙。谢谢你。

0 投票
3 回答
2265 浏览

lisp - Clisp REPL 错误输出:如何在发生错误的文件中查找行号?

我正在使用 CLisp 在 Lisp 的土地上工作,使用 Slimv 在 Vim 中编写代码,然后 alt-tabbing 到另一个终端窗口并使用 (load 'file.lisp) 将文件加载到 REPL,然后在回复。

当我在 REPL 中遇到错误时,有没有办法确定 file.lisp 中的哪一行发生了错误?我没有看到 REPL 错误输出中明确提到的行号,还有其他方法吗?

我发现了这个类似的问题,但唯一的答案是使用 Clisp 以外的东西,比如 sbcl、allegro 等:

如何改进 clisp 错误消息?

谢谢!

0 投票
4 回答
1994 浏览

lisp - Lisp 中的内存分配

Lisp 环境只需要分配一个 cons 单元来连接这两个项目。

以上来自 Lisp 书籍“Land of Lisp”。我不明白为什么这对只位于一个缺点单元格中。这些数据的内存是什么样的?

0 投票
3 回答
3185 浏览

macros - 在 clojure 中评估宏参数

我正在尝试将以下宏从 lisp 的土地翻译成 clojure:

但是我一直卡在需要多一级评估的 atts 上。例如,以下需要评估 t#:

因为它会产生类似的东西:

我希望评估属性的位置。如果我在上面使用“(eval t#)”,我会遇到这样的问题:

有什么建议么?

为什么在 Clojure 中似乎少了一级评估?

支持功能定义:

(出于某种原因,我没有以与本书相同的方式执行 pair 函数,这意味着它不能正确处理 nils)