我将通过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)))
Run Code Online (Sandbox Code Playgroud)
...产生这个错误......
draw-line: unbound identifier in module in: draw-line
Run Code Online (Sandbox Code Playgroud)
所以我在这个论坛做了一些研究,并安装了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
Run Code Online (Sandbox Code Playgroud)