You could explicitly define two methods, one with 3 other with 4 input vectors. What happens with the fourth vector when the function is called with only 3?
If it is taken as zero you can do something like
fun(v1::T,v2::T,v3::T) where T = fun(v1,v2,v3,zero(T))
for example