Чтобы написать или не писать `module Main where` в Haskell
Спецификация Haskell 98 говорит о том, что точка входа программы, а именно функция main
, должна находиться в модуле Main, по соглашению. Однако, даже если вы не пишете module Main where
в верхней части файла, пишете main
in, исходный код компилируется и кажется корректным, когда вы используете GHC.
Возникает вопрос:
- В чем разница между написанием
module Main where
и не его записью?
- Какой из них предпочтительнее?
Ответы
Ответ 1
На самом деле нет разницы, module Main (main) where
будет неявным определением, если вы не укажете заголовок самостоятельно. Из Отчет Haskell 98:
Сокращенная форма модуля, состоящая только из тело модуля, разрешено. Если это используется, предполагается, что заголовок module Main(main) where
.
Я предпочел бы явное определение неявного, но при a Main.hs
это второстепенное предпочтение.