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