Re:1/0 = 0 (2018)
by AlotOfReading on Monday December 02, 2024 @03:23AM
(#42294224)
The original purpose of defining it to be Nan/INF in floating point was exactly that. You'd do all the work and then check if it was Nan/INF at the end without having to check every intermediate result.
[ Parent
| on HN ]
If you want to do all the work at the end, 'exceptions' do exactly that, too.
Throwing an exception in a function normally stops the rest of the work that function would do. That is not the case when using Inf and similar
> const f = (x) => [x/2, x/0]
undefined
> f(10)
[ 5, Infinity ]I assert stopping immediately is much more practical. In many cases, you waste considerable amounts of processing power to reach a conclusion you often won't be able to use.
It depends on your use case.
Re:1/0 = 0 (2018)
by throwawaymaths on Tuesday December 03, 2024 @10:27PM
(#42314248)
Sure but what should be the default?
Rust and Haskell can solve this fairly well: both styles of dealing with errors are easily accessible.
Go solves this really badly.
As for specifically what to do about division: the right default depends on your application. Either way is defensible, and I would rather work on making it easy to pick either style in the language of your choice, than to worry too much about what the default should be.
That's a good point, sometimes this is what you want.