Я обнаружил довольно странную несогласованность между поведением 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? Для такого результата нет математического обоснования. Вы знаете причину этого, пожалуйста?