2015-07-28 2 views
4

init.hs библиотечный модуль имеет,модуль импорта из текущего рабочего каталога

module init where 
data Suite = Clubs | Diamonds | Hearts | Spades deriving (Eq,Ord,Enum,Show) 

main.hs, модуль входа имеет,

module Main where 
import init 
main = do 
    print (fromEnum Clubs) 

Оба модули находятся в том же каталоге и каталог не являясь частью пути.

При выполнении runhaskell main.hs он выдает ошибку как main.hs:2:8: parse error on input ‘init’.

Каков правильный способ импорта модуля в текущий рабочий каталог без загрязнения глобальных переменных PATH/CABAL?

ответ

7

Не следует ли начинать имя модуля с заглавной буквы? Заменить init с Init:

module Init where 
data Suite = Clubs | Diamonds | Hearts | Spades deriving (Eq,Ord,Enum,Show) 

module Main where 
import Init 
main = do 
    print (fromEnum Clubs) 

Edit:
Как упомянуто ØrjanJohansen:

Обычно, файл должен быть назван по имени модуля, заменив точек в имени модуля по каталогу сепараторы.

Quote source

В вашем случае Init.hs следует использовать.

+0

ваш правильный ответ ... я сделаю это как принято .. но все же я получаю сообщение об ошибке - 'Не удалось найти модуль 'Init'' –

+0

@MadhavanKumar, код, показанный выше, работает для меня. Просто убедитесь, что вы сохранили изменения. –

+1

@MadhavanKumar Если вы не находитесь в Windows, это также должно совпадать с именем файла. –

Смежные вопросы