Scheme 球拍中的人格平等

Scheme 球拍中的人格平等,scheme,racket,Scheme,Racket,我想做一个这样的平等测试 相等吗?somevar#\space 但是,即使当somevar=#\space时,这似乎也不会计算为真 正确的方法是什么?函数相等?应该起作用 > (define a #\space) > (define b #\space) > (equal? a b) #t 问题一定是别的 如何给somevar一个值?字符之间最直接的相等比较过程是: 当然,您可以始终使用equal?,但如果equal?不起作用,则问题可能出在其他地方。检查比较中使用的变量,它

我想做一个这样的平等测试

相等吗?somevar#\space

但是,即使当
somevar=#\space
时,这似乎也不会计算为真


正确的方法是什么?

函数
相等?
应该起作用

> (define a #\space)
> (define b #\space)
> (equal? a b)
#t
问题一定是别的


如何给
somevar
一个值?

字符之间最直接的相等比较过程是:

当然,您可以始终使用
equal?
,但如果
equal?
不起作用,则问题可能出在其他地方。检查比较中使用的变量,它们很可能有不同的值或不同的类型,这可以解释错误。尤其要确保
somevar
是真正的字符而不是字符串;例如,此比较为
false

(equal? " " #\space)
=> #f

somevar是调用此函数的值(定义(窥视端口)(读取字符串1(窥视输入端口)))。由于这是一个字符串,我也尝试过对“\\space”进行相等性测试。您可以使用
read char
来读取单个字符,或者在您的情况下,可以使用
peek char
。还有一个带单个空格的字符串是简单的“是的,我想您是对的,请参阅我上面对@soegaard.@user35202的评论。”,您正在读取单个字符字符串。这样比较:
(equal?somevar“”)
…它应该可以工作。
(equal-somevar\space)
应该可以完美工作。因此,这不是一个猜测游戏,但一个常见的错误是将单个字母字符串(如
)与字符(如
\space
)进行比较,这将不起作用,因为
相等?如果被比较的元素类型不同,则
将求值为
\f
。如果需要进一步帮助,请使用更多代码编辑您的帖子。
(equal? " " #\space)
=> #f