1

为什么要求 Scheme 解释大小写混合的符号值时,只返回小写版本?

#;> 'HelloWorld
helloworld

#;> 'helloworld
helloworld

对于上面的例子,我使用的是sisc

4

3 回答 3

2

R5RS 声明所有符号都不区分大小写,并且可能会更改它们的大小写。

(eq? 'a 'A)请注意,某些实现对此的处理方式不同.. return不是必需的(但很常见,如在 SISC 中)#t,但如果您定义了一个a可以使用(A).

于 2013-01-09T20:52:14.017 回答
1

在某些 Scheme 解释器中,符号不区分大小写,在 SISC 中似乎就是这种情况。这是依赖于实现的,并且在不同的实现中并不一致。例如,这些是 Racket 中的不同符号:

(equal? 'HelloWorld 'helloworld)
=> #f

根据此常见问题解答

R5RS 声明通过 Scheme 阅读器(即在阅读 Scheme 程序时)读取的标识符和符号不区分大小写,并且可能会改变它们的大小写。因此和 返回(eq? 'a 'A)相同。请注意,编写依赖于此的程序被认为是不好的风格,例如通过定义一个函数然后使用or调用它。(EQ? 'a 'A)#tfoo(Foo)(FOO)

于 2013-01-09T20:51:33.927 回答
0

Scheme 的大多数版本,就像它的母语 Lisp 一样,是不区分大小写的,所以符号可以以任何实现想要的方式被嵌入;大多数版本的 Scheme 和 Lisp 都使用大写符号,但也可以使用小写,就像用户输入的任何大小写一样。自 R6RS 以来,大多数 Scheme 系统都区分大小写,并且将完全按照输入的符号进行转换。

于 2013-01-09T20:52:13.423 回答