Well now that I understand more about how this all works, I think the lazy evaluation makes sense and that it also makes sense to not ‘see it itself’ for lack of a better term. It’s just that to a newbie from R, some of this is rather mystifying and it’s not always clear what to Google to clear things up.
So, the confusion isn’t so much around Iterators.product() itself, it’s just a more general confusion. For example,
using Distributions
Binomial(1)
gives
Binomial{Float64}(n=1, p=0.5)
But clearly, collect is not the way to go here if I want to see the “actual output”, which is a misnomer. Going into the documentation for Binomial doesn’t quite tell the answer, but you can find it in Distributions
rand(Binomial(1), 1)