gpt4 book ai didi

scheme - `if` 语句在 Scheme 中是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 23:30:33 24 4
gpt4 key购买 nike

这是我目前正在自学的链接 Scheme,http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme-Z-H-1.html

据作者介绍,
enter image description here

然后我尝试了一个最小的例子

(define (check-p x)
(if (>= x 0)
(display 1)))

,并且 DrScheme 给了我错误:
if: bad syntax (must have an "else" expression) in: (if (>= x 0) (display 1))

如果我在 if 中添加额外的声明声明,然后它的工作原理。但我不明白,为什么我们需要额外的声明?上面的代码语句对我来说很有意义。如果数字大于 0,则显示 1,否则什么都不做。任何的想法?

谢谢,

最佳答案

DrScheme 包括几个Scheme 的“教学”方言,它们是标准R5RS 或R6RS Scheme 的有限子集(它们施加的限制比)更多。您使用的方言可能限制您使用 if您在其中为两个分支提供值的语句。其实我刚才查了一下,好像所有的“教”方言都禁止你使用if只有一个分支的语句。

这旨在帮助您学习在 applicative 中编程。 (有时称为 functional )编程风格,其中您不依赖副作用,而是仅通过应用函数并从它们返回结果来计算值。在 applicative 风格中,没有副作用,语句的唯一结果是返回一个值。安 if不在其分支之一中返回值的语句在这种情况下没有意义;它没有用,实际上当您尝试使用该 if 返回的值时会导致未定义的行为。陈述。在应用风格中,语言中的每个语句都是一个表达式,根据它计算的值进行评估,而不是它引起的副作用。

如果您正在使用 display为了提供输出,您没有使用纯粹的应用风格。这完全没问题,但是许多对 Scheme 的介绍都喜欢从呈现应用风格开始,因为这样更容易推理和了解一切实际上是如何工作的。

但是,由于您不是在使用假定应用程序风格的文本工作,因此我建议您选择不同的方言。在“语言”菜单下,选择“选择语言”,然后我建议选择“R5RS”(旨在尽可能接近标准)或“相当大”(即 R5RS 加上一堆方便的 PLT 扩展)。

关于scheme - `if` 语句在 Scheme 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5751052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com