【发布时间】:2020-05-19 09:45:45
【问题描述】:
Racket 文档告诉我“eq? return #t if v1 和 v2 指的是同一个对象”,但是根据eq?,两个fixnums 是= 也是一样的, = “如果所有参数在数值上相等,则返回 #t”。我找不到任何关于“数字”和“符号”的消息,但在我找到的示例中:
> (eq? 'yes 'yes)
#t
这和上面是矛盾的,因为上面从来没有提到symbol是特殊的,所以'yes和'yes是不一样的。
这个让我更加困惑:
> (eq? (expt 2 100) (expt 2 100))
#f
> (eq? (* 6 7) 42)
#t
如果对数字进行数字测试,那么(eq? (expt 2 100) (expt 2 100))应该返回#t,否则通过引用测试数字,那么(eq? (* 6 7) 42)应该返回#f,所以我猜以上两种情况都不对。 .
为什么?!
【问题讨论】:
标签: racket