2017-02-06 19 views
0

Это похоже на вопрос на stack ghci not loading up local modules? , но не совсем то же самое.стек ghci не загружает локальный модуль, но ghci делает

У меня есть каталог с файлами Main.hs и Shapes.hs, где Main.hs имеет ссылку на модуль Shapes.

Если я бегу

ghci Main.hs

все работает отлично. Это версия 7.10.

Но если я бегу, в 8-й версии,

stack ghci

:load Main.hs

Я получаю ошибку

[1 of 1] Compiling Main (Main.hs, interpreted)

Main.hs:3:1: error:

Failed to load interface for ‘Shapes’

It is not a module in the current program, or in any known package.

Failed, modules loaded: none.

Я попытался решение по ссылке

:load Shapes.hs Main.hs

, но он по-прежнему не Работа. Я получаю ошибку

[1 of 2] Compiling Shapes (Shapes.hs, interpreted)

[2 of 2] Compiling Main (Main.hs, interpreted)

Main.hs:1:1: error:

The IO action ‘main’ is not defined in module ‘Main’

Failed, modules loaded: Shapes.

Я нашел следующее, который обсуждает этот второй вопрос:

How to avoid "‘main’ is not defined in module ‘Main’" when using syntastic

Но если бы я должен был поставить в

main :: IO()

в файле Main.hs , Я все еще получаю ошибки. Если бы я дополнительно добавить строку

main = return()

и эти две дополнительные линии в конце, то он будет загружен. Но после загрузки он просто выходит из основного, и у меня больше нет доступа к основным функциям. Я не вижу причин, по которым мне нужно использовать любые функции ввода-вывода, когда я импортирую какой-либо другой модуль. Как я, в версии 8, загружать локальный модуль без использования IO?

ответ

0

Я исправил свою проблему. Была строка в Main.hs вверху

module Main where

что я удалил. Теперь он работает, если я загружаю в стек ghci с

:l Main.hs Shapes.hs