Простите, что вмешаиваюсь в умный диалог, но при всей моей любви к Хаскелю, тамошний тайпчекер не отловит попытку взятия головы от пустого списка и прочие нетотальные функции, что приведет к краху по эррору именно в рантайме, включая то же пресловутое деление на 0. Поэтому говорить, что наличие системы типов (даже такой сильной как в Хаскеле, если оставить в стороне Идрисы и прочее) автоматически что-то там гарантирует как минимум слишком оптимистично. И это еще если не рассматривать чисто логические ошибки, которых по некоторым оценкам гораздо больше в коде.
Сильная система типов всё же даёт некоторые гарантии. По крайней мере, ты не положишь кошку в список собак. А то, что тайпчекер Хаскеля не ловит ошибки использования нетотальных функций - так всё-таки он не Идрис и не Агда. (Да, я в целом фанат языков с сильной статической типизацией :))