Element-wise product of vector of vectors

You can, in principle, write loops to do this without allocations (if the destination is already allocated) but with nested broadcast, I think it is trickier.

Here is one way to do it:

julia> let ⋆(x, y) = x .* y
           [[1], [2, 3]] .⋆ [[4], [5]]
       end
2-element Array{Array{Int64,1},1}:
 [4]
 [10, 15]

You can also define ⋆(x, y) globally if you need to use it everywhere.

See also: Idiomatic way to write element-wise combination of array of arrays?