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 我怎样才能让for循环不以嵌套的方式做事情?_Clojure - Fatal编程技术网

Clojure 我怎样才能让for循环不以嵌套的方式做事情?

Clojure 我怎样才能让for循环不以嵌套的方式做事情?,clojure,Clojure,我想要像这样的东西 (for [x [1 2 3] y [4 5 6]] (+ x y)) =>(5 7 9) 而不是 =>(5 6 7 6 7 8 7 8 9) 我想我可以通过解构来实现,但不确定如何实现。 我试过了 它给出了(39) 有什么建议吗?对于这个问题,宏的不是最合适的选择。尝试使用map: (map + [1 2 3] [4 5 6]) 建议:在Clojure中,您应该考虑递归,而不是迭代。谢谢您的建议!我仍在学习功能性思考。for是一个功

我想要像这样的东西

(for [x [1 2 3]
      y [4 5 6]]
      (+ x y))
=>(5 7 9)
而不是

=>(5 6 7 6 7 8 7 8 9)
我想我可以通过解构来实现,但不确定如何实现。 我试过了

它给出了(39)


有什么建议吗?

对于这个问题,宏的
不是最合适的选择。尝试使用
map

(map + [1 2 3] [4 5 6])

建议:在Clojure中,您应该考虑递归,而不是迭代。谢谢您的建议!我仍在学习功能性思考。for是一个功能性列表理解-它的名字会引起混乱,因为for循环在命令行中languages@m0skit0我会更进一步说,“思考功能性”——这是la@dbyrne用
map
给出的答案,这并不能解决更一般的问题:有时
for
更合适,因为您需要执行多个嵌套步骤,但您希望其中一个步骤组合两个seq。另一个解决方案是
(对于[[xy](映射向量[1234][456])(+xy))
(map + [1 2 3] [4 5 6])