我目前正在实施一个基于 Web 的 Scheme 环境,用于踢球和咯咯笑。在实现解析器的过程中,我偶然发现了一个奇怪的现象:一些 Scheme 实现声明在遇到分隔符之前读取数字的数字,但他们也声称双引号是有效的分隔符。成功评估123"abc"
对我来说似乎很奇怪,但 Racket 似乎做到了,显示123
和"abc"
顺序。
困惑的我启动了 Gimp 并进入了它的 Script-Fu 控制台,下面是 Guile Scheme。给它同样的表达,它抱怨一个未绑定的值;所以它试图将其解析为符号?
我尝试将 JScheme 作为“第三意见”。它还抱怨一个未定义的变量。
TL;DR: Scheme 的行为应该是什么?
旁注:鉴于后两者的抱怨,我尝试了以下方法:
(define 123"abc" 10)
123"abc"
它评估为10
。我很困惑。双引号不应该导致解析器退出而不是分配符号吗?