1

我刚刚开始阅读小阴谋家。我在理解某些单词时遇到了一些问题。

在第 27 页它说,

情商法则?

原始情商?有两个参数。每个必须是非数字原子。"

一个脚注说:在实践中,一些数字可能是 eq?

我使用球拍最小作为我的方案解释器。它评估(eq? 10 10)#t

玩具章节中有许多类似的问题。


作者所说的必须(标记为粗体)和脚注是什么意思?

4

2 回答 2

2

在指针本身中嵌入一些原始数据类型(例如低整数和字符)是传统的做法,eq?即使数据在不同时间/源中的不同点进入源中,也可以生成这些数据类型。但是,数字可以是任何大小,因此即使数字在某些时候达到特定的实现依赖大小,它们对于指针来说也会太大。当您尝试(eq? 10000000000 10000000000)时,它可能#f在 32 位系统和#t64 位系统中,而(eqv? 10000000000 10000000000)#t任何系统中。

于 2014-05-21T12:09:20.027 回答
1

Scheme 的真实身份谓词是eqv?. Eq?是一个优化版本,允许报告#f而不是#t应用于数字、字符或过程。大多数 Scheme 实现eq?在小的精确数字(称为“fixnums”)、字符和过程上做正确的事情,但在更大的数字或其他类型的数字上却失败了。

所以说“必须”意味着如果你申请eq?一个数字,你只能得到部分可预测的结果;脚注意味着在某些情况下(通常包括 10 个)你会侥幸成功。有关各种方案对 fixnums 的实际作用的详细信息,请参阅R7RS开发站点上的 FixnumInfo。

于 2014-08-28T21:44:17.083 回答