scheme - 哪种语言包适合 Drracket 中的 SICP?

标签 scheme sicp dr.racket

我正在尝试使用 SICP,并得到了一些代码。 所以我开始:

#lang scheme
(word 'comp 'uter)

返回错误:函数(字)未定义。

即使我尝试将其复制到 IDE(运行)中:

(define word?
  (let ((number? number?)
        (symbol? symbol?)
        (string? string?))
    (lambda (x)
      (or (symbol? x) (number? x) (string? x)))))

还是一样。

我认为这可能是语言版本或其他问题。

<小时/>

以上来自“SimplyScheme”,当我在SICP中完全引入代码时:

(define (sqrt x)
    (sqrt-iter 1.0 x))

IDE 返回 sqrt-iter 未定义。代码可以在第一章找到:http://mitpress.mit.edu/sicp/code/index.html

最佳答案

DrRacket有一个SICP compatibility language

1。从包管理器

documentation DrRacket 有一个简单的安装指南:

  1. 打开包管理器:在 DrRacket 中选择菜单"file",然后选择“包管理器...”。

  2. 在“Do What I Mean”选项卡中找到文本字段并输入:“sicp”

  3. 单击“安装”按钮。这会产生大量输出。即使有警告也不要担心。

  4. 测试一下。确保 DrRacket 中具有“确定源语言” 左下角。编写以下程序并单击RUN:

    #lang sicp 
    
    (inc 42) 
    ; ==> 43
    

这里有一个更高级的测试,使用图片语言,需要包含在#%require中:

#lang sicp
(#%require sicp-pict)

;; paint-hires / paint-hi-res renamed to just paint
(paint (below (beside diagonal-shading
                      (rotate90 diagonal-shading))
              (beside (rotate270 diagonal-shading)
                      (rotate180 diagonal-shading))))

点击RUN,您应该会在交互窗口中看到一个正方形,该正方形向中心变亮。

2 命令行安装

或者,您也可以通过运行以下命令从终端/shell 执行步骤 1-3:

raco pkg install sicp

从这里开始,您可以执行第一个安装说明中的步骤 4. 来测试它。

3。如果 raco pkg 不起作用,则使用较旧版本或使用 Planet 的 DrRacket

在 DrRacket 中还有一个 old version of SICP compatibility language 。当“从源中确定语言”处有左下选择框时,您可以添加:

#lang planet neil/sicp

作为定义中的唯一行(顶部文本区域)并按RUN,它将被安装。重新启动 DrRacket,您将在语言下拉列表中找到它。祝你好运。 您可能会收到很多红色的错误消息。忽略它并重新启动 DrRacket 即可。您可能不再在语言菜单中找到该选项,但通过使用 #lang Planet neil/sicp 启动每个文件,它仍然可以作为模块语言使用。

从错误来看,似乎与图片语言模块有关。我测试了这个代码片段,它仍然有效:

(paint-hires  (below (beside diagonal-shading
                             (rotate90 diagonal-shading))
                     (beside (rotate270 diagonal-shading)
                             (rotate180 diagonal-shading))))

关于scheme - 哪种语言包适合 Drracket 中的 SICP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19546115/

相关文章:

scheme - 所有可能的子列表方案

lambda - 计划中的关闭如何运作?

math - 我在这个计算 PI 的 Scheme 程序中找不到我的错误

emacs - 从 Racket REPL 更改输出打印样式

scheme - 是否可以更改DrRacket/Scheme搜索/引用库的顺序?

scheme - 计算 Racket BSL 中给定数字的适当除数之和

functional-programming - 如何判断变量的值是否是绑定(bind)到 Scheme 中的过程的符号?

unit-testing - chicken scheme srfi-64 测试错误问题

scheme - Mac OS X 10.5.8 上的 Racket 6.2