gpt4 book ai didi

lisp - 在 Common Lisp 中连接两个列表

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

我给自己设定了一个任务,即编写一个 Common Lisp 函数,该函数在不使用 append 的情况下连接两个列表。

Common Lisp 输入 (concat-lists '(1 2 3) '(4 5 6)) 应该返回 (1 2 3 4 5 6)

尽管我的解决方案似乎可行,但看起来过于复杂

(defun concat-lists(seq1 seq2)
(cond ((not (null seq1)) (cons (car seq1) (concat-lists (cdr seq1) seq2)))
(T (cond ((not (null seq2)) (cons (car seq2) (concat-lists seq1 (cdr seq2))))
(T nil)))))

我正在寻找的是使用 reduce 的更优雅的解决方案,我使用 seq1 作为初始值,然后将函数应用于 seq2 的每个元素,从而将列表的每个值附加到 seq1。不知何故,我总是在尝试时卡住....

非常感谢任何帮助或意见。谢谢!

最佳答案

CL-USER 39 > (reduce #'cons
'(1 2 3 4 5)
:initial-value '(a b c d e)
:from-end t)
(1 2 3 4 5 A B C D E)

关于lisp - 在 Common Lisp 中连接两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53402780/

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