I don't think that for
is the construct you are looking for if you have an unknown number of collections.
If we look at the definition of for
we can see that it is a macro that creates bindings from elements of the each collection to their own symbol. In your first example, x
and y
are bound to values of their respective collections. The only way to generate a call to for
that has dynamic number of collections (and therefore bindings) would be define a new macro that checks the size of args
, generates 1 symbol per element of args
, and then assembles a call to for
with all the bindings. It is doable, but I suspect we can find a simpler solution.
If your goal is to collect every possible way to take one item from each collection this can be accomplished with the cartesian-product
function from math.combinatorics
found here .