making zero_type() do this by default is probably not a good idea, because you could got a similar problem when using ||, a better idea might just be to create a short alias:
function zt=zero_type;
if(zt(foo) || zt(bar) || zt(baz))...
greetings, martin.