我正在通过 SICP 作为自学并在第 2 章中的图片语言部分。我一直在使用 DrRacket 进行早期练习,但是在尝试基于“画线”进行练习时出现编译错误本书这一部分的图片功能。
具体来说,这段代码...
(define (segments->painter segment-list)
(lambda (frame)
(for-each
(lambda (segment)
(draw-line
((frame-coord-map frame) (start-segment segment))
((frame-coord-map frame) (end-segment segment))))
segment-list)))
...产生此错误...
draw-line: unbound identifier in module in: draw-line
所以我在这个论坛上做了一些研究并安装了 Neil Van Dyke 提供的 SICP 包(http://www.neilvandyke.org/racket-sicp/#(part._usage))。我按照所有步骤操作,按照指示将语言更改为 SICP,但仍然出现相同的错误。
我假设这个包的目的是定义这个“内置”函数(以及书中的其他函数)。只是为了预测一些问题,我在文件中没有“require”语句,并使用“#lang planet neil/sicp”来指定语言而不是使用菜单(我还尝试使用菜单将语言更改为 SICP 并获取一个更奇怪的错误;请参阅下面的后记)。我的环境是Windows 7,DrRacket的版本是5.3.1。
也许我只是犯了一个菜鸟错误;任何见解将不胜感激。
谢谢。
PS:对于那些感兴趣的人,当我使用菜单将语言设置为“SICP(PLaneT 1.17)”时,对于我尝试编译的任何定义(即使是最琐碎的),我都会收到以下错误...
<unsaved editor>:1:0: #%top-interaction: unbound identifier;
also, no #%app syntax transformer is bound in: #%top-interaction