Разве нельзя импортировать модули из другого модуля, если они находятся в одном и том же каталоге? (Haskell)
Чтобы продемонстрировать свой вопрос, я создал такой тестовый проект ->
В каталоге "Данные" есть только 2 модуля, а именно "Test3.hs" и "Test4.hs". Это пустые модули для тестирования. (реализация: "Модуль Data.Test3 где")
"Test1.hs" импортирует все модули, как это ->
что приводит к ошибке ->
Я использую WinGHCi для импорта модулей, который автоматически меняет каталог на "cd: ~\.hs".
Я также попытался импортировать модули, используя GHCi и вручную изменяя каталог. Но в итоге получил тот же результат, что и выше.
Поэтому я прихожу к выводу, что нет способа импортировать ваши собственные модули из одного и того же каталога, и вы всегда должны создавать sub dir только для этой цели.
Это правильно?
1 ответ
Вам нужно решить, где находится ваш корневой каталог, запустить GHCi из этого каталога, а затем последовательно назвать все ваши модули относительно этого же каталога.
Вы должны называть свои модули последовательно как в объявлении модуля (module Foo where...
) и в отчетах об импорте (import Foo
).
Так что вам нужно либо:
module Test.Test1 where
import Test.Data.Test3
import Test.Data.Test4
import Test.Test2
или запустить GHCi изнутри Test
и удалите все Test
префиксы. Но вы не можете иметь префикс для некоторых, но не для других. Вы должны быть последовательными везде. Каждое имя модуля в основном представляет собой путь к файлу от текущего каталога до исходного файла.