Racket - 将引用列表中的符号自动转为小写
Racket - turns symbols in quoted list to lowercase automatically
我在 Racket 中有以下程序,语言设置为 "determine from source",输出语法设置为 "write":
#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 将符号变为小写?
R5RS 标准要求 reader 传递不区分大小写的符号。大多数 R5RS 实现会将具有大写符号的符号转换为小写。如果需要生成大写字母的符号,需要使用string->symbol
.
> (string->symbol "Hello")
Hello
由于许多 Scheme 实现支持区分大小写,后来的标准将默认值更改为区分大小写。
请参阅方案常见问题解答中的(第一个!)问题以获得更长的解释:
我在 Racket 中有以下程序,语言设置为 "determine from source",输出语法设置为 "write":
#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 将符号变为小写?
R5RS 标准要求 reader 传递不区分大小写的符号。大多数 R5RS 实现会将具有大写符号的符号转换为小写。如果需要生成大写字母的符号,需要使用string->symbol
.
> (string->symbol "Hello")
Hello
由于许多 Scheme 实现支持区分大小写,后来的标准将默认值更改为区分大小写。
请参阅方案常见问题解答中的(第一个!)问题以获得更长的解释: