小阴谋家和球拍
Posted
技术标签:
【中文标题】小阴谋家和球拍【英文标题】:Little Schemer and Racket 【发布时间】:2012-10-11 19:34:03 【问题描述】:我开始阅读 Little Schemer,现在我们使用 Racket 代替 PLT Scheme。我想知道 Racket 是否适合做书中的练习,还是我需要另一个真正的 Scheme 编译器。在我忘记告诉你之前,我的操作系统是 Windows x64。
这本书、语言和范式已经够复杂了,我很想避免与编译器打交道。
非常感谢。
【问题讨论】:
【参考方案1】:球拍/方案是可以互换的。你应该能够用它来回答任何练习。祝你好运。
另外,我建议下载 Dr. Racket 作为您的翻译。
【讨论】:
【参考方案2】:DrRacket 是 DrScheme 的 (r) 演变; DrRacket 非常适合“The Little Schemer”中的练习。只是不要忘记:
-
在
Language
对话框中,选择“使用源中声明的语言”
在您创建的每个文件的顶部写上#lang racket
在每个文件中实现 atom?
谓词,如本书开头所述
如果要重新实现现有过程,请在单独的选项卡或窗口中执行此操作,因为尝试在编辑窗口中重写过程将导致 duplicate definition for identifier
错误。如有必要,使用多个文件来保存过程定义
【讨论】:
Gracias Óscar, un abrazo desde Argentina. 非常有兴趣! Acabo de editar mi respuesta, tiene varios Tips adicionales para usar DrRacket con The Little Schemer 我一直在使用球拍,但我注意到我必须更改所有示例以包含引号。就像您不能只输入 (coffee cup tea cup and hick cup),它必须是 '(coffe cup tea cup and hick cup),并带有前导引号。【参考方案3】:我已经让这本书的作者担任教授。他现在自己使用 Racket,但他使用 Emacs 作为文本编辑器。
【讨论】:
【参考方案4】:你真的只需要atom?
函数。本书前言中的描述基本上是:
(define (atom? x)
(and (not (pair? x)) (not (null? x))))
如前所述,它应该满足这个测试:
(atom? '()) ;=> #f
请注意,Racklog 中还有一个定义将不满足该测试。
关于atom?
的更详细讨论是here。
尽管本书建议实现add1
和sub1
,但Racket确实已经提供了它们。
顺便说一句,我使用Vim for editing Racket,但a few other editors are capable。
【讨论】:
不确定;可能没有相关性。我在寻找原子时偶然发现了它?功能很容易尝试,但发现它不起作用,所以认为值得警告。以上是关于小阴谋家和球拍的主要内容,如果未能解决你的问题,请参考以下文章