Разве нельзя импортировать модули из другого модуля, если они находятся в одном и том же каталоге? (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 префиксы. Но вы не можете иметь префикс для некоторых, но не для других. Вы должны быть последовательными везде. Каждое имя модуля в основном представляет собой путь к файлу от текущего каталога до исходного файла.

Другие вопросы по тегам