如何获取 SICP、Scheme、练习 2.78 等中的 put 和 get 函数
我正在尝试在 SICP 中做练习 2.78,但 put 和 get 函数未知。我尝试过多种语言,比如相当大、racket、r5rs、mit-scheme、mzscheme等。我什至下载了SICP支持(http://www.neilvandyke.org/sicp-plt/),但没有成功。我怎样才能让这些功能发挥作用?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
是的,我发现 SICP 有时因为这样的事情有点烦人。假设存在但实际不存在的函数使得尝试示例变得更加困难。我像这样编写了自己的 (get) 和 (put)(这是 GNU guile 中的):
从本书后面的角度来看,这可能是一个幼稚的实现,但相当简单且工作正常。
Yes, I found SICP a little annoying sometimes because of stuff like this. Functions that are assumed to exist but don't actually exist make it harder to try to the examples. I wrote my own (get) and (put) like so (this was in GNU guile):
Probably a naive implementation from the perspective of later in the book, but fairly simple and worked fine.
伊莱·本德斯基。
这些功能可以使用内置 基本哈希表操作。这是我对 Eli 代码的修改版本,以便与 MIT-Scheme 版本 9.1.1 正常工作。
更新:
我在一段时间后发现了上述代码的错误。空列表在Scheme的条件子句中被解释为
true
,因此正确的get
实现应该如下:There is an implementation of put and get by Eli Bendersky.
These functions could be implemented using builtin Basic Hash Table Operations. Here is my modified version of Eli's code to work properly with MIT-Scheme Release 9.1.1.
UPDATED:
I've found bug with above mentioned code after time. Empty lists are interpreted as
true
in conditional clauses by Scheme, so correctget
implementation should be following:如果您使用 Racket 编程语言,请使用这些:
If you use Racket programming language please use these:
在
3.3.3表示表
的创建本地表
小节中,有一个实现。In subsection
Creating local tables
of3.3.3 Representing Tables
, there is an implementation.mit-scheme 有一个可供您使用的内置全局表。
http://www.gnu .org/software/mit-scheme/documentation/mit-scheme-ref/The-Association-Table.html
只需定义 get 和 put 即可:
mit-scheme has a built-in global table that you can use.
http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/The-Association-Table.html
simply define get and put to:
@Shen Yang 提到的,第 366~367 页的 3.3.3 表示表部分有一个实现
正如 “make-table”定义为:
there is an implementation in section 3.3.3 Representing Tables, on Page 366~367, as mentioned by @Shen Yang
and the "make-table" is defined as: