gpt4 book ai didi

scheme - 为什么这两个不相等?

转载 作者:行者123 更新时间:2023-12-01 07:13:05 25 4
gpt4 key购买 nike

我正在准备考试,我注意到了这个问题:

Define an object x so that (eq? (car x) (cdr x)) returns #t

我最初认为这会很简单。 cdr x是一个列表和 car x是单个元素,所以我的猜测是让 x 中的第一个元素成为等于 x 尾部的列表。所以我想出了
(define x (list (list 1) 1))

调用 car x在 DrRacket 结果中 (list 1) cdr x 也是如此,但是当我尝试调用 (eq? (car x) (cdr x))结果是#f。

我到底错过了什么?另外正确的答案是什么?

最佳答案

我们可以得到car的东西和 cdr of 不是一个列表。这是一对。

使用 cons 创建对,例如:

(define val (list 1))

(define val-pair (cons val val))
(list (list 1) 1) ,另一方面,等价于 (cons (list 1) (list 1)) , 其中 list被调用两次,每次都在内存中返回一个新的、单独的对象,尽管值相同。但是 eq?仅对相同的内存对象返回 true。

因此,虽然您的想法是合理的,值(value)方面的,但这里实际比较的不是值,而是相同性,就像内存对象的“指针相等”一样。

关于scheme - 为什么这两个不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37504799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com