【发布时间】:2012-06-18 20:48:42
【问题描述】:
我是新来的计划。这是麻省理工学院SICP课程的代码示例。
(define (+ x y)
(if (= x 0)
y
(+ (-1+ x) (1+ y))))
如何将其转换为球拍代码?我想转换为 Racket,因为我使用 DrRacket 来运行代码,我喜欢这样。它一直工作到现在,但抱怨方案的增量运算符。
我得到的错误是:
define-values: cannot change constant variable: +reference to undefined identifier: -1+
【问题讨论】:
-
您在 DrRacket 中使用什么语言?使用基于
#lang的语言(例如#lang racket),您可以重新定义来自该语言的+等原语。如果您使用的是学生语言,它会限制您以提供更好的错误报告。 -
您知道,
#lang scheme是一种旧的向后兼容语言。您可能只想使用#lang racket。我敢打赌,由于您的内存限制设置得太低或您的程序有错误(例如,无限循环),您会收到此错误。 -
我希望这个问题能够回答如何在 DrRacket IDE 中运行上述代码而无需手动翻译。