在clojure中合并2个列表
我正在尝试制作一个新的列表,它由两个预先存在的列表组成。基本上,如果在clojure中合并2个列表,clojure,Clojure,我正在尝试制作一个新的列表,它由两个预先存在的列表组成。基本上,如果a是一个列表,而b是一个列表,我想让列表c是a的元素,然后是b的元素。感谢您的帮助 您正在寻找函数: (concat a b) 例如: (concat '(1 2) '(2 3 4)) :> (1 2 2 3 4) 谢谢,那正是我想要的!仅供参考-concat是惰性的,因此请注意不要在不使用类似命令强制序列的情况下应用它太多次,否则可能会导致堆栈溢出。在清理堆栈之前,您需要进行大量的连接,但是惰性也会导致其他奇怪的行为
a
是一个列表,而b
是一个列表,我想让列表c
是a
的元素,然后是b
的元素。感谢您的帮助 您正在寻找函数:
(concat a b)
例如:
(concat '(1 2) '(2 3 4))
:> (1 2 2 3 4)
谢谢,那正是我想要的!仅供参考-
concat
是惰性的,因此请注意不要在不使用类似命令强制序列的情况下应用它太多次,否则可能会导致堆栈溢出。在清理堆栈之前,您需要进行大量的连接,但是惰性也会导致其他奇怪的行为(例如,如果您使用time
来测量算法的速度,那么惰性值可能不会在time
调用中被强制)@DaoWen您是否有concat
清理堆栈的参考资料?@MSmith-此示例显示了concat
中的惰性以及使用doall
强制消除问题导致的堆栈溢出:这是一个有趣的示例。您正在使用recur
创建一个延迟调用堆栈,当调用该堆栈时,该堆栈将崩溃。我通常不认为惰性调用是以这种方式嵌套的,但正如您所示,它是可以做到的。