3 ms·
> The example I usually use is allowing integers to overflow, instead of automatically promoting to arbitrary precision (Python), or converting to a sentinel va
by vanderZwan 8y ago
> The example I usually use is allowing integers to overflow, instead of automatically promoting to arbitrary precision (Python), or converting to a sentinel value (R).
IIRC Julia used to automatically promote integers, is this the main reason why this was dropped?
- simonbyrne 8y agoNo, I don't believe integers ever promoted on overflow (or at least not since 2012). If an operation involves two different integer types, they do promote to the larger one (i.e. an Int64 + a BigInt will give a BigInt).
- vanderZwan 8y agoOh no, I'm very certain of this: I distinctly recall a github issue where people complained that addding two 32bit integers resulted in a 64bit integer, which was justified as giving more correct answers due to potential integer overflow.
- StefanKarpinski 8y agoYou're talking about different types of promotion. `Int32 + Int32` did once upon a time give an `Int64` on 64-bit systems. However, that was true regardless of the values of those integers—it was entirely predictable from their types alone. The type of promotion that's being talked about here is promoting `Int + Int` to `BigInt` but only when the values being added are too big to be stored in an `Int`. Julia has never done that.
- vanderZwan 8y agoAh, ok. I can imagine that that is more JIT-friendly.