Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在clojure中合并2个列表_Clojure - Fatal编程技术网

在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
创建一个延迟调用堆栈,当调用该堆栈时,该堆栈将崩溃。我通常不认为惰性调用是以这种方式嵌套的,但正如您所示,它是可以做到的。