хаскелл лексах привет мир - PullRequest
8 голосов
/ 12 января 2011

плохих новостей этим утром, я был готов попробовать и использовать Leksah (кстати, красивое приложение) для продолжения изучения haskell.

Я не смог скомпилировать пример "Hello World", который я нашел, прочитав учебник 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 function main 'не экспортируется модулем Main'

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

ВАЖНОЕ РЕДАКТИРОВАНИЕ : Теперь Leksah поставляется с файлом Main.hs, загружаемым непосредственно при первом запуске leksah, который содержит полностью функциональный мини-проект Hello World. Он также имеет минималистский счетчик. Отлично подходит для начинающих : -)

Ответы [ 3 ]

15 голосов
/ 12 января 2011

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

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

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

6 голосов
/ 12 января 2011

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

6 голосов
/ 12 января 2011

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

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

module Main (main) where
...