Stefan:
Ok so maybe that wasn't the best example to illustrate the Float64 issue. I guess using the parametric types in functions works so solve this (but not the push! issue) function chaininit{T}(theta_init::Vector{T}, n) chain = Array{T,1}[theta_init] for k=1:n theta_prop = chain[end] theta_prop += rand(3) likelihoodratio = computelr(theta_prop, theta_curr) if rand() < minimum([1,likelihoodratio]) push!(chain, theta_prop) else push!(chain, theta_curr) end end chain end function chainadd!{T}(chain::Vector{Vector{T}}, n) for k=1:n theta_prop = chain[end] theta_prop += rand(3) likelihoodratio = computelr(theta_prop, theta_curr) if rand() < minimum([1,likelihoodratio]) push!(chain, theta_prop) else push!(chain, theta_curr) end end end