Вопрос

Плохие новости сегодня утром я был готов использовать Лексах (кстати, красиво выглядящее приложение) для продолжения изучения Хаскелла.

Я не мог собрать пример «привет мирового мира», который я нашел, читая Учебное пособие Leksah.

module Main (
main = putStrLn "Hello World"     
) where

compilation-error: src\Main.hs:16:5: parse error on input='`

а также

module Main (
) where
main = putStrLn "Hello World"

compilation-error: src\Main.hs:1:0: The main functionMain 'не экспортируется модулем Main'

Что бы вы посоветовали мне попробовать что -то еще?

Важное редактирование: Теперь Leksah поставляется с файлом main.hs, загруженной непосредственно при первом запуска Leksah, который содержит полностью функциональный проект Hello World Mini. Он также имеет минималистскую часть для анализа модулей. Отлично подходит для начинающих :-)

Это было полезно?

Решение

Текст в парарантезе после имени модуля является экспортным списком. Это означает, что вы должны поместить все функции в программу, которую вы хотите экспортировать там. Но помимо этого, вы также должны определить свою основную функцию где -то. Попробуй это:

module Main (
  main
) where
main = putStrLn "Hello World"

PS: Вы также можете удалить парарантез и все, что будет, чем все в вашем модуле, будет экспортировано.

Другие советы

Ваш второй пример почти там, просто удалите () из -за пределов Main. Анкет Это ваш экспортный список для вашего модуля, который вы сделали пустым (ничто между скобками). Потому что, main не видно (потому что это не экспортируется).

Вы также можете просто экспортировать Main:

module Main (main) where

"Хорошая практика, чтобы все экспортировать?" Точно нет. Вы не хотите, чтобы эти детали реализации, такие как вспомогательные методы, протекают снаружи. Другим примером являются конструкторы ценностей, потому что для них нет способа проверять здравомыслие, аргументы по умолчанию и т. Д. Чтобы преодолеть это, вы используете их только внутри модуля и предоставляете удобные и безопасные функции инициализации для снаружи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top