Подтвердить что ты не робот

Haskell - как использовать несколько модулей в одном файле?

Извините, это глупый вопрос, но я не могу понять, как поместить несколько модулей в один и тот же файл. Предположим, что файл имеет имя A.hs. Если сначала поставить модуль B, т.е.

module B where ...
module A where ...

он жалуется, что ожидал A, когда я запускаю "ghci A" (это не верхний уровень, поэтому я не хочу называть "ghci A.hs" ). Другой способ, и он жалуется на "ошибку разбора на модуле ввода" ).

Здесь есть связанная ошибка, http://hackage.haskell.org/trac/ghc/ticket/2428. Нет ли способа получить это, даже если другой модуль используется только локально?

4b9b3361

Ответ 1

У вас не может быть нескольких модулей в одном файле. Ошибка, с которой вы связались, - это просто сообщение об ошибке, данное GHC, неясно об этом.

Однако, если вы используете Cabal, вы все равно можете контролировать видимость модулей, помещая модули, которые хотите видеть пользователям в разделе Exposed-Modules, и помещать любые внутренние модули в Other-Modules.

Ответ 2

Я нашел следующий отчет об ошибках.

Что относится к этому элементу списка рассылки, в котором говорится:

No, that not possible because haskell will use the module name A.B.C to look the module up in path A/B/C.[l]hs.
So using modules
module A where
..
module B where
the compiler could only find one of them. (naming the file A.hs or B.hs)
You have to use one file for each module

Итак, я думаю, что ответ отрицательный.