问题标签 [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.
lisp - 运行基于 SICP 模式匹配规则的替换代码
我在网上找到了本课的代码(http://groups.csail.mit.edu/mac/ftpdir/6.001-fall91/ps4/matcher-from-lecture.scm),我玩得很开心试图调试它。该代码看起来与 Sussman 所写的非常相似:
我正在使用 R5RS 在 DrRacket 中运行它,我遇到的第一个问题是那个原子?是一个未定义的标识符。所以,我发现我可以添加以下内容:
然后我试图弄清楚如何实际运行这个野兽,所以我再次观看了视频并看到他使用以下内容:
正如苏斯曼所说,我应该回来(+ 1 0)。相反,使用 R5RS 我似乎打破了扩展字典的过程:
它返回的具体错误是: mcdr: expects argument of type mutable-pair; 给定#f
使用 neil/sicp 时,我在以下行中断了评估程序:
它返回的具体错误是:模块中的未绑定标识符:用户初始环境
所以,说了这么多,我会很感激一些帮助,或者是朝着正确方向的一个很好的推动。谢谢!
scheme - SICP 练习 1.2
我在 SICP 中的练习 1.2 中遇到了困难。
将以下内容翻译成前缀形式:
这就是我所拥有的,我无法弄清楚为什么它不起作用。我错过了什么?
c# - C# 开发人员开始 SICP - 建议的开发环境?
我终于开始阅读SICP。
我下载了GNU/MIT 方案,看来我需要在 Edwin 编辑器中工作,当你习惯它时我相信它会很棒,但是我真的不希望在学习方案的同时不必学习新的编辑器。
我希望会有一个 Visual Studio 插件或类似的东西。
我真的很高兴只使用notepad ++并使用命令行进行编译。
有没有人有任何建议?
scheme - 仍然推荐 SICP 吗?
我对 python 有一些经验,我要求一种新的语言,并说我很难实现我所学的。他们建议我学习 SICP。说它使用了一种很棒的语言并教授了很棒的编程基础知识。
但我注意到它是在 1984 年出版的。你们推荐它,还是我被拖了?:p
谢谢。
javascript - 我想实现一个用于学习 SICP 的方案解释器
我正在阅读Structure and Interpretation of Computer Programs一书,我想逐渐编写一个方案解释器。
你知道最容易阅读(而且简短)的方案的实现吗?我将用 C 编写一个 JavaScript。
scheme - SICP视频讲座2
我对这个例子有疑问
-1+ 和 1+ 有什么问题,当我评估它时,我得到了这个结果
- DrScheme:-1+:此函数未定义
- 球拍:对未定义标识符的引用:-1+
但我写了这个,它可以工作
macros - 你如何编写一个 MIT Scheme 宏来返回一个 lambda 形式?
我试图在 MIT 方案中创建与这个微不足道的(在 Common Lisp 中)宏的等价物,这让我感到困惑:
这是一个简单的个人项目,一个基于第二个 SICP 讲座中构建的函数的数值方程求解器。我不在乎这个宏是否“安全”或“卫生”,或者如果 exp 引用除 'x. 我希望能够写作
其中 solv 是:
而不必打字
但无法弄清楚如何使用 MIT 方案语法规则来做到这一点。
我已经尝试过了,但它不起作用:
我尝试了其他可能不值得提及eval
但无济于事的事情。
此外,参考了关于 Scheme 宏系统的优秀教程(不是参考资料),这些教程从简单的小示例开始,并带有大量评论,特别是展示了如何将反引号逗号样式的 LISP 宏(对我来说非常直观)转换为Scheme 的语法宏系统会很棒。
clojure - SICP sqrt NullPointerException
在 Clojure 中实现一些初始 SICP 代码时,我遇到了意外的 NullPointerException。特别是,我想实现第 1.1.7 节中的迭代平方根过程。
这是代码:
这适用于足够小的值,例如(sqrt 16)
. NullPointerException clojure.lang.Numbers.lt (Numbers.java:3693)
对于任何大于 about 的输入,我都会收到错误消息(square 2718)
。
有任何想法吗?
更新整个回溯(前一个是我在 repl 中得到的全部内容):
在 sicp_in_clojure.chapter_one$sqrt$good_enough_QMARK___14.invoke(chapter_one.clj:40) 在 sicp_in_clojure.chapter_one$sqrt 的 clojure.lang.Numbers.lt(Numbers.java:3693) 的线程“main”java.lang.NullPointerException 中的异常。在 sicp_in_clojure.chapter_one$eval19.invoke(chapter_one.clj:48) 的 sicp_in_clojure.chapter_one$sqrt.invoke(chapter_one.clj:37) 调用(chapter_one.clj:43)。 :6465) at clojure.lang.Compiler.load(Compiler.java:6902) at clojure.lang.Compiler.loadFile(Compiler.java:6863) at clojure.main$load_script.invoke(main.clj:282) at clojure .main$script_opt.invoke(main.clj:342) at clojure.main$main.doInvoke(main.clj:426) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.lang.Var。在 clojure.lang.AFn 调用(Var.java:401)。applyToHelper(AFn.java:161) 在 clojure.lang.Var.applyTo(Var.java:518) 在 clojure.main.main(main.java:37)
emacs - 从信息缓冲区向方案解释器发送代码
我想在我的 Emacs 中学习 SICP。我已经安装了 MIT Scheme、Emacs 24 并下载了 sicp 信息(使用本指南http://www.pchristensen.com/blog/articles/setting-up-and-using-emacs-infomode/)。现在我可以在专用缓冲区(Mx run-scheme)中运行方案解释器,但是当我尝试从信息缓冲区(Cx Ce)发送定义表达式之一时出现以下错误:
看起来 Emacs 正在尝试使用 Lisp 解释器执行此代码。作为此问题的解决方法,我现在打开方案缓冲区(*.scm 文件),从 info 中将代码复制到其中,然后他们使用 Cx Ce 执行它。但我想直接从信息缓冲区执行它。我该如何设置?