раньше считалось, что писать
ghc fac.hs
действительно не работает. Вместо этого вы должны были сказать
ghc --make fac.hs
Разница заключается в том, что бывшие компилирует fac.hs
и ничего не делает, а второй проверяет, является ли fac.hs
использует любые другие модули, которые нуждаются в перекомпиляции, автоматически включает в себя все необходимые пакеты и т.д. и так далее.
Однако поведение по умолчанию было изменено, и указанные выше две команды теперь идентичны. (Я забыл, когда это произошло, но прошло некоторое время назад.) Возможно, вы все еще видите документацию и примеры с явным переключателем --make
, и лично мне нравится включать его. Но это только я.
Единственное, что дает вам переключатель -o
, это возможность изменять имя выхода. Это может быть полезно, если у вас есть, скажем, Main.hs
, и вы хотите, чтобы выход был вызван MyCoolProgram
или что-то еще. Одна вещь, которую я будет сказать: под Linux, fac.hs
(если это модуль Main
), скомпилируется в исполняемый файл с именем fac
, но под Windows он будет называться fac.exe
. Если вы используете -o
для жесткого кодирования двоичного имени, этого не произойдет. И я не уверен, что вы можете запустить двоичный файл Windows, который не заканчивается .exe
...
благодарит за ясный и краткий ответ. – user1493813