Racket - 将引用列表中的符号自动转换为小写

时间:2015-11-14 15:01:29

标签: list racket quote r5rs

我在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将符号转换为小写?

1 个答案:

答案 0 :(得分:3)

R5RS标准要求读者在没有区分大小写的情况下处理符号。大多数R5RS实现都会将带有大写符号的符号转换为小写。如果您需要使用大写字母生成符号,则需要使用string->symbol

> (string->symbol "Hello")
Hello

由于许多Scheme实现支持区分大小写,后来的标准将默认值更改为区分大小写。

请参阅方案常见问题解答中的(第一个!)问题,以获得更长的解释:

http://community.schemewiki.org/?scheme-faq-language