Haskell - как использовать несколько модулей в одном файле? - PullRequest
22 голосов
/ 03 августа 2011

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

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

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

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

Ответы [ 2 ]

21 голосов
/ 03 августа 2011

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

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

8 голосов
/ 03 августа 2011

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

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

No, that's 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

Я думаю, что ответ - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...