gpt4 book ai didi

scheme - 将 assoc 中的列表附加到 Scheme 中的另一个列表

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

我对如何将从 assoc 过程中获得的列表附加到另一个列表中感到有点困惑,这是我所拥有的:

(define new-list (list 'test))
(define source-a (list '(a foo) '(b bar) '(c hello)))
(append new-list (assoc 'a source-a))
(display new-list)

输出只是(test),我不确定为什么不是(test a foo)。可以这样追加吗?

最佳答案

那是因为 append 不是一个变异函数。它返回一个 列表,其参数附加在一起。按照 Scheme 的约定,执行变异的函数以感叹号结尾,例如 set!

可以使用set! 来修改new-list 以便更新它,如下所示:

(set! new-list (append new-list (assoc 'a source-a)))

但是,在 Scheme 中,这是非常不鼓励的。命令式编程大量使用变异,而函数式编程语言(包括 Scheme)则尽量避免变异和副作用,因为它们会使程序更难推理。

理想情况下,您只需声明一个具有新值的新绑定(bind),而不是更新现有绑定(bind)。像这样的东西会工作得很好:

(define original-list (list 'test))
(define source-a (list '(a foo) '(b bar) '(c hello)))
(define new-list (append original-list (assoc 'a source-a)))
(display new-list)

关于scheme - 将 assoc 中的列表附加到 Scheme 中的另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28962257/

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