【问题标题】:How to run Picture language examples of SICP /scheme in repl?如何在 repl 中运行 SICP /scheme 的图片语言示例?
【发布时间】:2016-10-06 02:58:14
【问题描述】:

我是SICP 的初学者。我正在阅读2.2.4 部分,图片语言。我坚持它的例子。我不明白,如何运行这些示例?

如书中所述,wave 应该是一个原始程序。但是当我尝试执行它时,REPL 抛出一个错误,如下所示

1 ]=> wave

;Unbound variable: wave

同样,当我尝试执行本节的第一个示例时,REPL 抛出错误

1 ]=> (define wave2 (beside wave (flip-vert wave)))

;Unbound variable: wave

我不明白,怎么了?任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • 我想你的意思是输入painter,而不是primitive

标签: scheme sicp


【解决方案1】:

DrRacket IDE 中有一个SICP compatibility language。使用 DrRacket 有助于格式化代码、识别错误并且它有一个调试器。它还支持标准的 Scheme 以及它自己的方言,racket,它们非常相似,但有很多库,就像大多数现代语言一样。

安装(安装 DrRacket 后)

从终端运行:

raco pkg install sicp

你会得到很多输出,也许还有一些警告。重新启动 DrRacket 并将#lang racket 替换为#lang sicp。要获取图片语言,请添加(#%require sicp-pict),因此这个示例应该可以正常工作:

#lang sicp
(#%require sicp-pict)

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

这是对Which lang packet is proper for SICP in Dr.Racket?的简短回答

【讨论】:

  • 如果你和我一样想要添加自己的图像,sicp-pict(bitmap->painter ...) 程序可以让你做到这一点。所以你可以做类似(rotate180 (bitmap->painter "mypic.jpg"))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多