我正在为 R7RS Scheme 编写一个解释器,以更全面地了解 Scheme 编程语言。
据我了解,如果两个列表参数都表示内存中的相同位置,则eqv?
必须返回。#t
但是,我不确定cdr
列表的 是否必须始终为 eqv:
(define l '(a b c))
(eqv? (cdr l) (cdr l)) ; #t of #f?
我的知识中缺少的部分是cdr
特定列表的 是否必须始终指向特定位置。对于一个特定的列表,cdr
每次在列表上调用它时必须总是返回一个相同的子列表,还是可以返回一个全新的子列表?
(我知道我可以使用现有的 Scheme 解释器凭经验对此进行测试,但我主要对标准要求的内容感兴趣)。