在对可扩展散列进行编码时,可以选择使用散列值的最高有效位或最低有效位来确定要散列到哪个桶.使用最低有效位具有许多优点:
我无法理解的是为什么在参考之后参考后的参考显示了使用最高有效位完成的可扩展散列.据我所知,最重要的比特产生的唯一优势是纸上(或屏幕上)没有交叉线的图表.是否有任何充分的理由可以解释为什么这么多来源如此最重要而非最少?
在DrRacket中,当我将语言设置为R5RS并运行以下代码时:
(lambda (x) z)
Run Code Online (Sandbox Code Playgroud)
它运行没有错误并返回#<procedure>.这对我来说很有意义; lambda表单定义了一个尚未对其主体进行求值的过程,以便返回该过程.
或者,当我使用Racket语言方言时,我收到以下错误:
z: unbound identifier in module in: z
Run Code Online (Sandbox Code Playgroud)
我不明白为什么Racket会产生这个错误.我的意思是,当然我看到这z是未定义的,但我对评估模型的理解是在函数定义时不评估函数体.这与R5RS结果一致,但与Racket结果无关.什么是球拍在这里做的,确切地说?是否在代码正文中以某种方式"窥视"以查看变量是否已定义?R5RS的评估模型有什么不同导致这种不同的行为?