Из главы 9 книги Изучите Haskell во благо я узнал, что
По соглашению мы обычно не указываем объявление типа для
main
.
Насколько я могу судить, это соглашение широко распространено. Однако, если я скомпилирую с использованием флага -Wall
программу, в которой отсутствует сигнатура типа для main
, например
-- test.hs
-- main :: IO ()
main = print (1 :: Int)
GHC выдает предупреждение:
$ ghc -Wall test.hs
[1 of 1] Compiling Main ( test.hs, test.o )
test.hs:2:1: Warning:
Top-level binding with no type signature: main :: IO ()
Linking test ...
$
Я в замешательстве... Если сигнатура типа для main
действительно лишняя, почему -Wall
заставит GHC жаловаться, когда она отсутствует? Есть ли веские причины (кроме избавления от этого предупреждения) для указания типа main
в любом случае?
main
, чтобы уменьшить беспорядок в их представлении. Они не подразумевают, что вы не должны комментировать это. - person chi   schedule 09.04.2015main
явной сигнатуры типа очень полезно на практике. - person shang   schedule 09.04.2015