Это может просто не остановить . Целочисленное деление может быть выполнено в линейное время посредством повторного вычитания: для 7/2 вы можете вычесть 2 из 7 в общей сложности 3 раза, так что это частное, а остаток (модуль) равен 1. Если вы должны были предоставить деление 0 на алгоритм, подобный этому, если бы не было механизма для его предотвращения, алгоритм не остановился бы: вы можете вычитать 0 из 42 бесконечное число раз, не доходя никуда.
С точки зрения типа это должно быть интуитивно понятно. Результатом неопределенного вычисления или не останавливающего вычисления является ⊥ («низ»), неопределенное значение, присущее каждому типу. Деление на ноль не определяется для целых чисел, поэтому оно должно по праву генерировать ⊥, вызывая ошибку или не завершаясь. Первое, вероятно, предпочтительнее. ;)
Другие, более эффективные (логарифмические) алгоритмы деления основаны на рядах, сходящихся к частному; для дивиденда 0, насколько я могу судить, они либо не сойдутся (т.е. не прекратят работу), либо приведут к 0. См. Division в Википедии.
Для деления с плавающей точкой аналогичным образом требуется особый случай: делить два числа с плавающей запятой, вычитать их показатели и целочисленные делить их значения. Тот же основной алгоритм, та же проблема. Вот почему в IEEE-754 есть представления для положительной и отрицательной бесконечности, а также ноль со знаком и NaN (для 0/0).