3 ms·
> But is Pony doing something unsound? Absolutely not. It is totally fine to define 1/0 = 0. Nothing breaks a=x/N b=y/N If a==b, then x==y No longer true, w
by ggggtez 8y ago
> But is Pony doing something unsound? Absolutely not. It is totally fine to define 1/0 = 0. Nothing breaks
a=x/N
b=y/N
If a==b, then x==y
No longer true, with this change. Essentially a variety of mathematical properties of numbers in the Real space don't hold when you allow division by 0.
- emileokada 8y agoThis is not true if you say division by 0 is undefined or +inf either. It really is totally fine.
- ggggtez 8y agoNo, you are assuming that 1/0= "undefined" where "undefined" is a magical value. It's not. It literally means 'That operation has no definition, and there is no reasonable result to return'. Many languages handle this in a practical way by creating a special value "undefined", "NaN", or others that has special properties. But let's be clear that "0" is a normal number in the real number space, as so expectations about properties of real numbers are not going to hold up.
- wan23 8y agoWhen there is no reasonable result to return does it really matter what result is returned? 1 / 0 == 0 is about the same as 1 / 0 == 3. To avoid this just don't do 1 / 0 in your program.
- lmm 8y ago> 1 / 0 == 0 is about the same as 1 / 0 == 3 Sure, and both are bad. > To avoid this just don't do 1 / 0 in your program. If you're going to avoid doing it, better to have it throw an exception if you do it by accident.
- LoSboccacc 8y agowell, as long as you aren't doing calculus
- Y_Y 8y agoI think this is the crucial bit. Division by zero in fields means nothing, but if you want to tack on calculus (part of pretending that doubles are reals) then zero is a perfectly good limit for division and it turns out that defining it as anything at all breaks your system. I didn't like the blogpost, because it's smug, and doesn't even mention this obvious objection.
- ajanuary 8y ago“Nothing breaks” in that it isn’t unsound, in that you can’t use it to prove a falsehood. Not that you can’t use the nice little shortcuts you’re used to. In practical terms, that _does_ have an impact, because people might use those shortcuts without realising the system they’re operating under doesn’t allow it. But you picked the wrong quote to make that point under.
- lisael 8y agoTo elaborate on the 'nice little shortcut' you mentioned, here it is: If a==b and N≠0, then x==y EDIT: Formatting
- ummonk 8y agoNo, that is not necessary. "Given an x, y, and N such that x/N == y/N, it is true that x == y". There is no need to say N != 0 under the ordinary definition of division.