Я обнаружил довольно странную несогласованность между поведением div
и /
.
*ghci> :t 1 `div` 0
1 `div` 0 :: Integral a => a
*ghci> :t 1 / 0
1 / 0 :: Fractional a => a
*ghci> 1 / 0
Infinity
*ghci> 1 `div` 0
*** Exception: divide by zero
Я с удивлением заметил, что дробное деление на ноль приводит к Infinity
, тогда как div
правильно приводит к исключению.
A NaN
может быть приемлемым для /
, но почему Infinity
? Для такого результата нет математического обоснования. Вы знаете причину этого, пожалуйста?