I am going through the Clojure in Action book and code similar to that below is given for a function that returns all pairs of numbers below m whose sum is a prime (assume prime? is given):
(defn pairs-for-primes [m]
(let [z (range 0 m)]
(for [a z b z :when (prime? (+ a b))]
(list a b))))
How would one generalize that to return the n-tuples of all numbers below m whose sum is a prime?
(defn all-ntuples-below [n m]
...
forcan be used for a sort of “special case” of cartesian product, where you know the sets in advance at compile time. Since you don’t actually know the sets you want the product of, you need to use a real cartesian-product function. For example, with clojure.math.combinatorics, you could writeBut perhaps your question is about how to implement a cartesian product? It’s not that hard, although the version below is not terribly performant: