История изменений
Исправление AndreyKl, (текущая версия) :
А вот это использование и корректность типов при этом вполне проверяется тестами
Скажем, ты в итоге придёшь к тому что «программу всё равно надо запустить, а то ведь мы не узнаем, работает она или нет».
Я ещё раз повторяю: то что проверено в типах проверять смысла нет. Это область компилятора. В компиляторе могу быть ошибки, конечно, но я думаю это достаточно редкое явление, чтобы не считать его основным.
И если более-менее осмысленная программа на хаскеле скомпилировалась, это часто значит что она работает корректно. Часто в том смысле что несравнимо чаще чем с++, си, php, javascript в той же ситуации.
То что корректно в динамическом языке - мне пофиг, потому что это не имеет практического смысла.
Ещё раз - смысл в том чтобы возложить возможно большее число проверок на типы, потому что типы проще в написании и поддержке.
То что не все случаи описываются типами - не так важно, важно что трудозатраты значительно уменьшаются.
Кстати, на сколько я понимаю, пример с цельсиями и фаренгейтами некорректен - это вполне проверяется типами, причём доказывается. А тесты могут проверить лишь некоторое ограниченное число тестовых примеров.
Исходная версия AndreyKl, :
А вот это использование и корректность типов при этом вполне проверяется тестами
Скажем, ты в итоге придёшь к тому что «программу всё равно надо запустить, а то ведь мы не узнаем, работает она или нет».
Я ещё раз повторяю: то что проверено в типах проверять смысла нет. Это область компилятора. В компиляторе могу быть ошибки, конечно, но я думаю это достаточно редкое явление, чтобы не считать его основным.
И если более-менее осмысленная программа на хаскеле скомпилировалась, это часто значит что она работает корректно. Часто в том смысле что несравнимо чаще чем с++, си, php, javascript в той же ситуации.
То что корректно в динамическом языке - мне пофиг, потому что это не имеет практического смысла.
Ещё раз - смысл в том чтобы возложить возможно большее число проверок на типы, потому что типы проще в написании и поддержке.
То что не все случаи описываются типами - не так важно, важно что трудозатраты значительно уменьшаются.
Кстати, на сколько я понимаю, пример с цельсиями и кельвинами некорректен - это вполне проверяется типами, причём доказывается. А тесты могут проверить лишь некоторое ограниченное число тестовых примеров.