问题标签 [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.
lisp - Lisp“关联列表”和Java Map 这样的键值映射之间有什么关系?
我正在阅读《Land of Lisp》(顺便说一句,这是我读过的最好的技术书籍之一),我遇到了“关联列表”:
Lisp 中的关联列表与 Java 的 Map(键值绑定)的概念是否相同?
对于living-room
键,怎么可能有多个值?为什么要用列表括起来?
functional-programming - 将一个函数分成多行
以下是令人惊叹的书籍“Lisp 之国”中示例的一些源代码:
由于我没有Lisp 的本能,我发现将一个方法分成多行(作为命令式样式)然后尝试将其变形为函数式样式很有用。
你能帮我把make-edge-list函数分成多行吗?
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
?
f# - 消除我通过like、monads和其他东西传递的显式状态
我正在阅读F#中的 Lisp Land of Lisp一书(是的,很奇怪,我知道)。对于他们的第一个示例文本冒险,他们使用了全局变量突变,我想避免它。我的 monad-fu 很弱,所以现在我正在做这样的丑陋状态传递:
如何分解显式状态以使其更漂亮?(假设我可以访问 State monad 类型,如果它有帮助的话;我知道 F# 中有它的示例代码。)
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
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 的眼睛,我做错了什么?
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 类型的条件]
我不太明白。需要帮忙。谢谢你。
lisp - Clisp REPL 错误输出:如何在发生错误的文件中查找行号?
我正在使用 CLisp 在 Lisp 的土地上工作,使用 Slimv 在 Vim 中编写代码,然后 alt-tabbing 到另一个终端窗口并使用 (load 'file.lisp) 将文件加载到 REPL,然后在回复。
当我在 REPL 中遇到错误时,有没有办法确定 file.lisp 中的哪一行发生了错误?我没有看到 REPL 错误输出中明确提到的行号,还有其他方法吗?
我发现了这个类似的问题,但唯一的答案是使用 Clisp 以外的东西,比如 sbcl、allegro 等:
谢谢!
lisp - Lisp 中的内存分配
Lisp 环境只需要分配一个 cons 单元来连接这两个项目。
以上来自 Lisp 书籍“Land of Lisp”。我不明白为什么这对只位于一个缺点单元格中。这些数据的内存是什么样的?
macros - 在 clojure 中评估宏参数
我正在尝试将以下宏从 lisp 的土地翻译成 clojure:
但是我一直卡在需要多一级评估的 atts 上。例如,以下需要评估 t#:
因为它会产生类似的东西:
我希望评估属性的位置。如果我在上面使用“(eval t#)”,我会遇到这样的问题:
有什么建议么?
为什么在 Clojure 中似乎少了一级评估?
支持功能定义:
(出于某种原因,我没有以与本书相同的方式执行 pair 函数,这意味着它不能正确处理 nils)