It is common that programming languages have different types with similar or analogous functionality. For example, consider the integer types
BigInt, or the float point types
The reason for this proriferation of types is that none of them is adequate for every situation.
Int64 is favored when one needs high speed of execution, whereas
BigInt is favored when one is doing calculations with very big numbers.
Given that for some users, the
Big types might be more adequate than the
64 types, why not let the user decide which one of them is Julia’s default?
The kinds of calculations that I do are so small, that I actually have the luxury of not worrying so much about efficiency. In my case, the
BigInt type is much more convenient for me than the
Int64 type, because using the first I do not have to check for integer overflow.
But the only way I have of writting Julia code with the
Big types in place of the
64 types is either to use the
big"-" or syntax everywhere, or to start every line of code with some macro. A trivial arithmetical operation
julia> 157 + 82 would become
julia> big"157" + big"82" or
julia> @MyMacro 157 + 82.
I have some arguments for letting the users change the default types:
- It seems that many programmer prefer big integers over 64 bits integers.
- There are languages that allow users to change the default type.
At least Haskell does this: Kwang's Haskell Blog - Type defaulting in Haskell
- Letting users change the default type fits very well with the philosophy and design of the Julia Language, as I understood it.Ju
Julia tries not to privilege it’s built-in types, and gives the user the flexibility to use his own custom type. In Julia we have numbers with measurement units(Unitful.jl), dual number(DualNumbers.jl), doublefloats(DoubleFloats.jl), and those numbers are just as good and efficient as the built-in numbers - something that is unimaginable in other languages.