问题标签 [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.

0 投票
1 回答
3391 浏览

lisp - 球拍博士中的 mcons

我在读取球拍博士的输出时遇到问题。默认情况下,它使用 mcons 显示列表。例如,scp 练习 2.32 产生:

我无法阅读此内容。有没有办法使输出看起来像:

谢谢!

0 投票
2 回答
1154 浏览

scheme - 方案 - 二十一点计划 (SICP) / 学习编程

我决定学习编程阅读/做 SICP。

我正在使用 DrRacket 和 http://www.neilvandyke.org/racket-sicp/

我写了一个二十一点程序https://github.com/fnava621/scheme_blackjack。有用。

你能让这个程序更具可读性和简洁吗?

我是不是评论太多了?评论不够?如何让这个程序“更好”?

我也扔掉了手套。你能做一个程序,使用“最优”策略并确定玩家赢庄家的概率(使用 n 个样本大小)吗?我会做同样的事情并比较代码。

感谢阅读/做,费尔南多·纳瓦

0 投票
2 回答
788 浏览

recursion - 在 clojure 中实现 foreach (doseq)

我正在通过 SICP 工作 - 一项练习是实施 foreach (doseq)。这是一个学术练习。在clojure中,这就是我想出的:

但是,我对是否do作弊有点模糊,因为do它是 clojure 中的一种特殊形式,我认为 SICP 中还没有引入类似的东西。有没有更简约的答案?

这是仅在最后一个元素上执行 proc 的另一种尝试:

0 投票
3 回答
1090 浏览

scala - Scala中的符号微分

我想在 Scala 中使用它的模式匹配来创建一个符号微分函数,就像在 SICP 中所做的那样。我希望能够写出这样的东西:

这在 Scala 中的“本机”表达式上是否可行?

0 投票
3 回答
236 浏览

lisp - 在 SICP 中开始练习时出错(练习 1.3)

提示是定义一个过程,该过程返回三个数字中最大的两个的平方和。

我知道这不是一个优雅的解决方案,但这是我一起破解的:

我想知道为什么我会出错。

顺便说一句,单词 object 后面的数字始终是正确答案。我是一个方案初学者,它一定是我的语法吗?

谢谢

0 投票
2 回答
582 浏览

lisp - 元循环评估器,实现环境

我正在尝试根据 Harold Abelson 和 Gerald Jay Sussman 着名的“计算机程序的结构和解释”一书在 Scheme 中实现 Metacircular Evaluator。

http://mitpress.mit.edu/sicp/full-text/sicp/book/node79.html , http://mitpress.mit.edu/sicp/full-text/sicp/book/node80.html

作者建议以这种方式设置环境:

但是,我不明白为什么

应该像我们在Scheme中所期望的那样工作,因为据我所知,Scheme默认通过值传递变量来函数,因此在两次应用“define-variable!”之后 对于initial-env,initial-env不会每次都改变,setup-environment函数会返回extend-environment返回的值。

我的理解错误在哪里,请您指教?

先感谢您!

0 投票
1 回答
240 浏览

lambda - LABELS 中定义的 Lambda 不创建函数?不执行?

在使用 Steel Bank Common Lisp 通过 SICP 工作时,我取得了相当大的成功,但是我在“图片语言”示例上遇到了障碍。以下似乎不会写入 PPM 文件,而我编写的其他旋转和翻转可以。我怀疑 LAMBDA 在 LABELS 中调用时不知何故没有返回函数?

我已经有 Mx check-parens 并且那里没有任何东西是孤立的或看似不正常的。

0 投票
2 回答
362 浏览

haskell - 如何深入理解 SICP 中描述的信号流图?

SICP 第 3.5.3 章 http://mitpress.mit.edu/sicp/full-text/book/book-ZH-24.html#%_sec_3.5.3

在第 部分,SICP通过反馈循环Streams as signals给出了一个视听解释。Implicit style of definition但我想知道如何准确理解图表?真正的优势是什么,是否有任何背景知识?

再举一个例子,不是在 Scheme 中,而是在 Haskell 中:

我们也可以画出两者的信号流图。我们如何利用这些图表?

感谢您的建议和信息!

0 投票
2 回答
969 浏览

haskell - 管理状态 - SICP 第 3 章

我一直在研究计算机程序的结构和解释,并在 Haskell 中完成练习。前两章很好(github 上的代码),但第 3 章让我更加努力地思考。

首先讨论管理状态,以银行账户为例。他们定义了一个make-withdraw函数

这样您就可以执行以下代码:

我不确定如何在 Haskell 中模拟这一点。我首先想到了一个使用 State monad 的简单函数:

这允许我运行代码

但这与方案代码有所不同。理想情况下,我可以运行类似的东西

但我不确定如何编写函数makeWithdraw。有什么建议吗?

0 投票
1 回答
722 浏览

diagram - 绘制 SICP 中的信号流图

我正在寻找绘制这样一个图表的方法http://mitpress.mit.edu/sicp/full-text/book/ch3-ZG-35.gifhttp://mitpress.mit.edu/sicp /full-text/book/ch3-ZG-49.gif , http://mitpress.mit.edu/sicp/full-text/book/ch3-ZG-51.gif,以 SICP 命名signal-flow diagram。我尝试了一些方法,但都失败了。我在等你的帮助。

我已经尝试graphviz并编写了以下代码。我想获得斐波那契序列流的图表。

但结果很尴尬。是否有任何简单的工具(我更喜欢 WYTIWYG)或教程来绘制这种图表?

非常感谢。