这是我目前正在自学的计划的链接,http://www.ccs.neu.edu/home/dorai/ty-scheme/ty-scheme-ZH-1.html
根据作者的说法,

然后我尝试了一个最小的例子
(define (check-p x)
(if (>= x 0)
(display 1)))
Run Code Online (Sandbox Code Playgroud)
,而DrScheme给了我错误:
if: bad syntax (must have an "else" expression) in: (if (>= x 0) (display 1))
Run Code Online (Sandbox Code Playgroud)
如果我在该if语句中添加一个额外的语句,则它可以工作。但是我不明白,为什么我们在那里需要额外的声明?上面的代码声明对我来说很有意义。如果数字大于0,则显示1,否则不执行任何操作。任何的想法?
谢谢,
DrScheme包括Scheme的几种“教学”方言,它们是标准R 5 RS或R 6 RS Scheme的有限子集(它们施加的限制更多)。您使用的方言可能限制您使用if为两个分支都提供值的语句。实际上,我刚才检查了一下,似乎所有“教学”方言都禁止您使用if仅包含一个分支的语句。
这旨在帮助您学习应用性(有时称为功能性)编程风格的编程,在这种风格中,您不依赖于副作用,而是仅通过应用函数并从函数中返回结果来计算值。在应用样式中,没有副作用,一条语句的唯一结果就是返回一个值。if在该分支的其中一个分支中不返回值的语句在这种情况下将没有任何意义;它不会有用,并且实际上在您尝试使用该if语句返回的值时会导致未定义的行为。在应用风格中,语言中的每个语句都是一个表达式,对其计算的值进行评估,而不是其引起的副作用。
如果display用于提供输出,则说明您不是在使用纯粹的应用样式。很好,但是对Scheme的许多介绍都希望从呈现一种应用风格开始,因为这样可以更轻松地进行推理和了解一切的实际工作方式。
但是,由于您不是使用假定的编程风格编写文本,所以建议您选择其他方言。在“语言”菜单下,选择“选择语言”,然后我建议选择“ R5RS”(旨在尽可能接近标准)或“相当大”(即R5RS加一堆)方便的PLT扩展名)。