问题标签 [sicp]
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.
scheme - 我的方案代码有什么问题?
我为 SICP 2.20 编写的函数是:
然后我尝试用
我得到的错误是:“作为第一个参数传递给 integer-equal 的对象 #t?不是正确的类型。”
我认为 #t 和 #f 是平等的......
我在网上找到的一个代码示例如下,我运行它并且它可以工作。但是,我做错了什么?
scheme - 教会数字算术
我正在通过 SICP 工作,问题 2.6让我陷入了困境。在处理 Church 数字时,将零和 1 编码为满足某些公理的任意函数的概念似乎是有意义的。此外,使用零的定义和 add-1 函数推导出单个数字的直接公式是有意义的。我不明白如何形成加号运算符。
到目前为止,我有这个。
查看lambda calculus的维基百科条目,我发现 plus 的定义是 PLUS := λmnfx.mf (nfx)。使用该定义,我能够制定以下程序。
我不明白的是,如何仅使用先前派生过程提供的信息直接派生该过程。谁能以某种严格的类似证明的形式回答这个问题?直觉上,我想我明白发生了什么,但正如理查德·费曼曾经说过的,“如果我不能建造它,我就无法理解它……”
lisp - 关于 SICP chpt 4.1 的问题:(analyze expr) 如何帮助加速评估?
我正在阅读 SICP 的以下部分
http://mitpress.mit.edu/sicp/full-text/book/book-ZH-26.html#%_sec_4.1.7
根据文本,eval
将改进的以下转换提供了性能改进,因为多次评估的表达式只会被分析一次?
这是analyze
书中给出的一个函数:
我不明白为什么这本书说它analyze
只会运行一次。的主体eval
,((analyze exp) env))
基本上是说每次eval
被调用,analyze
不会exp
作为它的参数被调用吗?这意味着analyze
每次调用时eval
都会调用。
我的理解有什么问题?我将不胜感激任何反馈,谢谢!
compiler-construction - SICP最后两章的简短解释
谁能给我一个关于SICP(计算机程序的结构和解释),ch4元语言抽象和ch5用注册机计算的最后两章的清晰简洁的解释?
我还想知道这两章的内容是否(以及如何)与标准的本科编译器课程不同。
sicp - 追加到表单是如何工作的?(SICP关于逻辑编程的部分)
我目前正在研究 SICP 关于逻辑编程的部分,但我陷入了有关逻辑推导的示例中,尤其是附加到表单规则。它们是如何工作的?我不太明白的是第二条规则如何 cdr-downs 第一个列表。例如,给定:
(规则(附加到表单()?y?y))
(规则(附加到表单 (?u . ?v) ?y (?u . ?z))(附加到表单 ?v ?y ?z))
a) 我们如何到达:
b) 这个呢:
c) 最后:
我会对执行规则匹配所需的具体心理步骤感兴趣。
先感谢您。
lisp - DrRacket 解释器是否使用基于 SICP 练习 1.5 的正序评估?
必须根据以下价值做出决定:
(测试 0(p))
其中 test 定义为:
p 定义为:
当我评估(test 0 (p))
解释器进入无限循环时,表明它正在评估p
. 这显示了正常顺序评估,因为操作数在被替换为参数之前被评估。SICP 说 LISP 使用应用顺序评估。
big-o - O(fib n) 复杂度算法?
在观看计算机程序的结构和解释的讲座 1B 时,有一个计算斐波那契数的函数。讲师指出时间复杂度为 O(fib n) - 我以前从未见过。我已经看到它四舍五入为常数、线性、n+m、二次、多项式或指数复杂度,但是否还有其他 O(fib n) 算法或其他有趣的大 O 表示法值得研究或研究?
programming-languages - 渴望评估/应用顺序和惰性评估/正常顺序
据我所知,渴望评估/应用顺序在应用函数之前评估函数的所有参数,另一方面,惰性评估/正常顺序仅在需要时评估参数。
那么, eager evaluation和applicative order以及lazy evaluation和normal order这对术语有什么区别呢?
谢谢。
lambda - 使用 lambdas 帮助理解方案中 cons 和 car 的这种实现
我的问题与以下代码有关:
我的问题是这段代码实际上是如何工作的。据我所知,缺点。正在返回一个在其范围内包含变量 x 和 y 的过程。车。然后从 cons 中获取返回的过程。并将其应用于另一个接受两个参数 p 和 q 并返回 p 的 lambda。我的困惑在于第二个 lambda,P 和 Q 的值究竟来自哪里?
lisp - 做 SICP 练习时 DrRacket 应该设置什么语言?
为了进行SICP练习,我应该在 DrRacket 中选择什么语言?