Scheme 使用大写和小写方案符号,需要澄清

Scheme 使用大写和小写方案符号,需要澄清,scheme,Scheme,为什么要求Scheme解释大小写混合的符号值时,只返回小写版本 #;> 'HelloWorld helloworld #;> 'helloworld helloworld 对于上面的示例,我在一些方案中使用了解释器符号不区分大小写,在SISC中似乎就是这样。这取决于实现,不同的实现之间并不一致。例如,球拍中有不同的符号: (equal? 'HelloWorld 'helloworld) => #f 据此: R5R指出,通过Scheme reader读取的标识符和符号(即,

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

#;> 'HelloWorld
helloworld

#;> 'helloworld
helloworld

对于上面的示例,我在一些方案中使用了

解释器符号不区分大小写,在SISC中似乎就是这样。这取决于实现,不同的实现之间并不一致。例如,球拍中有不同的符号:

(equal? 'HelloWorld 'helloworld)
=> #f
据此:

R5R指出,通过Scheme reader读取的标识符和符号(即,在读取Scheme程序时)不区分大小写,可能会改变大小写。因此
(eq?'a'a)
(eq?'a'a)
相同,并返回
\t
。但是请注意,编写依赖于此的程序被认为是不好的风格,例如通过定义函数
foo
,然后使用
(foo)
(foo)
调用它


Scheme的大多数版本,就像其父语言Lisp一样,都是不区分大小写的,因此符号可以按照实现的任何方式插入;Scheme和Lisp的大多数版本都使用大写符号,但也可以使用小写,用户输入的任何大小写都可以。自R6RS以来,大多数方案系统都区分大小写,并将按照输入的符号完全插入符号。

R5RS说明所有符号都不区分大小写,可能会更改其大小写


请注意,有些实现以不同的方式处理此问题。。
(eq?'a'a)
返回
#t
不是必需的(但在SISC中很常见),但如果定义函数
a
,则需要能够使用
(a)
调用它。。。在我的系统上,上述返回值为
true
。谢谢奥斯卡!