gpt4 book ai didi

scheme - 诡计多端的循环列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:58:14 25 4
gpt4 key购买 nike

我正在用诡计测试这段代码:

> (define xxx  (let ((x '(1 2 3))) (set-cdr! (cddr x) x) x))
> xxx

它显示 (1 2 3)

但是这个:

(define x '(1 2 3))
(set-cdr! (cddr x) x)
x
=> (1 2 3 . #-2#)

创建循环列表

为什么第一个代码在诡计中不起作用?如果您不了解 guile,我只想知道它是否应该根据方案规范工作,不知道在哪里搜索此类内容。

最佳答案

您的示例的问题是 - 它们不起作用。他们都没有。我不知道第一个是如何返回 (1 2 3) 的。但是当您在两个示例中修复相同的问题时,它们会按预期工作并创建循环列表。

问题?

'(1 2 3)(quote 1 2 3)(list 1 2 3) 非常不同。它们“看起来”一样,但第一个是静态列表,您无法修改它。只有使用 list 函数(以及 cons)创建的列表是您可以修改的列表。

修复:

(define xxx
(let ((x (list 1 2 3)))
(set-cdr! (cddr x) x)
x))

xxx ;; => (1 2 3 . #-2#)

第二个例子也是如此:

(define x (list 1 2 3))
(set-cdr! (cddr x) x)

请在发布前测试您的代码。

关于scheme - 诡计多端的循环列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55812133/

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