What am I doing wrong with my parametric types?
I have this Cartesian product function
function cart_product{E}(n, A::Vector{Vector{E}})
lengths = [length(a) for a in A]
elems = Array(E, length(A))
accum_lengths = Array(Integer, length(A))
accum_lengths[1] = prod(lengths[2:])
for i = 2:length(A)
accum_lengths[i] = accum_lengths[i-1] / lengths[i]
end
cycle_lengths = [24/accum_lengths[i] for i = 1:length(A)]
scales = cycle_lengths ./ lengths
is = [div((n % cycle_lengths[i]),scales[i]) + 1 for i = 1:length(A)]
for i = 1:length(A)
elems[i] = A[i][is[i]]
end
elems
end
I am getting type errors with the either of the following
v = Array[["a", "b"],["c", "d", "e"],["f", "g", "h", "i"]]
v = Array[[1, 2],[3, 4, 5],[6, 7, 8, 9]]
cart_product(1,v)
cart_product` has no method matching cart_product(::Int64,
::Array{Array{T,N},1})
What's going wrong here?