gpt4 book ai didi

list - Racket 中的循环列表

转载 作者:行者123 更新时间:2023-12-02 00:31:01 24 4
gpt4 key购买 nike

自从我上次在 Racket 中编程已经有一段时间了。现在我想在 Racket 中制作一个循环列表,如下所示:

(define x (list 1 2))
(set-mcdr! (cdr x) x)

但这会引起错误:

set-mcdr!: contract violation
expected: mpair?
given: '(2)
argument position: 1st
other arguments...:
'(1 2)

我很惊讶,因为 (cddr x)'() 所以我不明白为什么他告诉我“预期:mpair?”因为 '(2) 是一对(cdr 为空列表)。

感谢您的帮助!

最佳答案

如果您希望 set-mcdr! 工作,列表必须是可变的,并且使用的所有过程也必须对可变对进行操作;请查看documentation请注意,所有过程都包含 m 作为其名称的一部分。例如,试试这个:

(require racket/mpair)

(define x (mlist 1 2))
(set-mcdr! (mcdr x) x)

关于list - Racket 中的循环列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28369527/

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