name value overload type
mixin define_defaults!(["donkey"], ["hello"], true, string);
-- if just define only one variable, there is no need to be array.
-- If the array are intended to define multiple variables of the same types, then all the name, value, and overload should all be array of same length.