Ответ 1
Ну, вообще говоря, как ясно видно из этого предупреждения, всегда рекомендуется давать привязки верхнего уровня подписи типа. На самом деле было бы разумнее сказать
По соглашению мы указываем объявление типа для всего 1.
Разумеется, в большом проекте main
сам по себе делает небрежное усилие, поэтому действительно не имеет смысла опускать подпись. Просто напишите, ради последовательности.
Однако, хотя Haskell отлично подходит для правильно структурированных проектов и на самом деле существует тенденция писать почти все в библиотеках, это также удивительно хорошо, как быстрый язык сценариев, для других, которые люди пишут на Python или Perl. И в этих случаях вам, как правило, не важно, что касается безопасности и хорошей документации и т.д., Вы просто хотите быстро записать что-то как можно более сжатое, что делает работу. Обычно вы не компилируете эти сценарии с помощью -Wall
, а просто выполняете их с помощью runhaskell
. И поскольку скрипты всегда должны содержать main
(в отличие от большинства других исходных файлов Haskell), действительно достаточно разумно опустить здесь подпись.
Я все еще подозреваю, что большинство Haskellers в настоящее время пишут main::IO()
даже в самых простых сценариях, если только по привычке.
1 Только все на верхнем уровне. Локальные подписи иногда также имеют смысл, но часто они скорее загромождают код.