Как сделать произвольный уровень вложенного цикла for

Я могу сделать двухуровневый вложенный цикл, как это

for i1 in 1:n
  for i2 in 1:n
    do something with (i1,i2)      

Как расширить это на произвольный уровень вложенного цикла?

Например, я могу сделать это в Python, чтобы зациклить декартово произведение n ^ m

for i in (itertools.product(xrange(n),repeat=m)):

подобно

for i in (itertools.product(xrange(2),repeat=3)):
    print i

(0, 0, 0)
(0, 0, 1)
(0, 1, 0)
(0, 1, 1)
(1, 0, 0)
(1, 0, 1)
(1, 1, 0)
(1, 1, 1)

Спасибо за комментарий @ tholy. Я успешно применил Iterators.jl. Я новичок Джулии, поэтому мой код может быть неуклюжим.

for i in product(repmat(Any[1:2],3)...)
    println(i)
end

(1,1,1)
(2,1,1)
(1,2,1)
(2,2,1)
(1,1,2)
(2,1,2)
(1,2,2)
(2,2,2)

Ответы на вопрос(3)

Ваш ответ на вопрос