如何将一个集合中的所有元素与另一个集合中的所有元素相乘?

Bla*_*ere 14 clojure

说我有:

(def s1 [1 2 3 4 5])
(def s2 [1 2 3 4 5])
Run Code Online (Sandbox Code Playgroud)

对于每一个xs1,我想每乘以它ys2.


为了澄清,我基本上想要笛卡尔积,所以我不认为map这里有效.

Mic*_*zyk 23

(for [x1 s1
      x2 s2]
  (* x1 x2))
Run Code Online (Sandbox Code Playgroud)

  • 很美丽.*流下眼泪* (12认同)
  • 首先,您可以在Clojure REPL中键入`(doc for)`以获得(希望)良好的描述`for`的功能; 如果你发现它达不到你的期望,你的经验可以帮助改善文档!其次,这是一个简短的总结:`for`采用绑定向量和单个"body"表达式.绑定向量包括本地的名称(上面的`x1`和`x2`)和产生序列的表达式(`s1`和`s2`).在seqs的笛卡尔乘积项的每一个元组(在这里s1`和`s2`的`产物每个(`x1`,`x2`))本体被评估一次. (3认同)
  • 幸运的是,我确实在线阅读了for the function的文档,遗憾的是它让我的大脑爆炸了. (2认同)