Подтвердить что ты не робот

Чтобы написать или не писать `module Main where` в Haskell

Спецификация Haskell 98 говорит о том, что точка входа программы, а именно функция main, должна находиться в модуле Main, по соглашению. Однако, даже если вы не пишете module Main where в верхней части файла, пишете main in, исходный код компилируется и кажется корректным, когда вы используете GHC.

Возникает вопрос:

  • В чем разница между написанием module Main where и не его записью?
  • Какой из них предпочтительнее?
4b9b3361

Ответ 1

На самом деле нет разницы, module Main (main) where будет неявным определением, если вы не укажете заголовок самостоятельно. Из Отчет Haskell 98:

Сокращенная форма модуля, состоящая только из тело модуля, разрешено. Если это используется, предполагается, что заголовок module Main(main) where.

Я предпочел бы явное определение неявного, но при a Main.hs это второстепенное предпочтение.