我在Racket中有以下程序,语言设置为“从源代码确定”,输出语法设置为“写入”:
#lang r5rs
(define g '((w C C) (x A C) (y A B) (z B C)))
当我运行它并输入交互式提示时
> g
我得到了
{{w c c} {x a c} {y a b} {z b c}}
但是,当我直接输入列表时,我得到了
> '((w C C) (x A C) (y A B) (z B C))
{{w C C} {x A C} {y A B} {z B C}}
如何防止Racket将符号转换为小写?
答案 0 :(得分:3)
R5RS标准要求读者在没有区分大小写的情况下处理符号。大多数R5RS实现都会将带有大写符号的符号转换为小写。如果您需要使用大写字母生成符号,则需要使用string->symbol
。
> (string->symbol "Hello")
Hello
由于许多Scheme实现支持区分大小写,后来的标准将默认值更改为区分大小写。
请参阅方案常见问题解答中的(第一个!)问题,以获得更长的解释: