我刚刚开始阅读小阴谋家。我在理解某些单词时遇到了一些问题。
在第 27 页它说,
情商法则?
原始情商?有两个参数。每个必须是非数字原子。"
一个脚注说:在实践中,一些数字可能是 eq?
我使用球拍最小作为我的方案解释器。它评估(eq? 10 10)
为#t
。
玩具章节中有许多类似的问题。
作者所说的必须(标记为粗体)和脚注是什么意思?
我刚刚开始阅读小阴谋家。我在理解某些单词时遇到了一些问题。
在第 27 页它说,
情商法则?
原始情商?有两个参数。每个必须是非数字原子。"
一个脚注说:在实践中,一些数字可能是 eq?
我使用球拍最小作为我的方案解释器。它评估(eq? 10 10)
为#t
。
玩具章节中有许多类似的问题。
作者所说的必须(标记为粗体)和脚注是什么意思?
在指针本身中嵌入一些原始数据类型(例如低整数和字符)是传统的做法,eq?
即使数据在不同时间/源中的不同点进入源中,也可以生成这些数据类型。但是,数字可以是任何大小,因此即使数字在某些时候达到特定的实现依赖大小,它们对于指针来说也会太大。当您尝试(eq? 10000000000 10000000000)
时,它可能#f
在 32 位系统和#t
64 位系统中,而(eqv? 10000000000 10000000000)
在#t
任何系统中。
Scheme 的真实身份谓词是eqv?
. Eq?
是一个优化版本,允许报告#f
而不是#t
应用于数字、字符或过程。大多数 Scheme 实现eq?
在小的精确数字(称为“fixnums”)、字符和过程上做正确的事情,但在更大的数字或其他类型的数字上却失败了。
所以说“必须”意味着如果你申请eq?
一个数字,你只能得到部分可预测的结果;脚注意味着在某些情况下(通常包括 10 个)你会侥幸成功。有关各种方案对 fixnums 的实际作用的详细信息,请参阅R7RS开发站点上的 FixnumInfo。