Haskell - как использовать несколько модулей в одном файле?
Извините, это глупый вопрос, но я не могу понять, как поместить несколько модулей в один и тот же файл. Предположим, что файл имеет имя A.hs. Если сначала поставить модуль B, т.е.
module B where ...
module A where ...
он жалуется, что ожидал A, когда я запускаю "ghci A" (это не верхний уровень, поэтому я не хочу называть "ghci A.hs" ). Другой способ, и он жалуется на "ошибку разбора на модуле ввода" ).
Здесь есть связанная ошибка, http://hackage.haskell.org/trac/ghc/ticket/2428. Нет ли способа получить это, даже если другой модуль используется только локально?
Ответы
Ответ 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
Итак, я думаю, что ответ отрицательный.