Разве нельзя импортировать модули из другого модуля, если они находятся в одном каталоге? (Haskell) - PullRequest
0 голосов
/ 06 сентября 2018

Чтобы продемонстрировать свой вопрос, я создал такой тестовый проект ->

enter image description here

В каталоге «Данные» есть только 2 модуля, а именно «Test3.hs» и «Test4.hs». Это пустые модули для тестирования. (реализация: «Модуль Data.Test3 где»)

«Test1.hs» импортирует все модули, как это ->

enter image description here

, что приводит к ошибке ->

enter image description here

Я использую WinGHCi для импорта модулей, который автоматически меняет каталог на "cd: ~ \ .hs".

Я также пытался импортировать модули, используя GHCi и вручную изменяя каталог. Но в итоге получил тот же результат, что и выше.

Итак, я пришел к выводу, что нет способа импортировать ваши собственные модули из одной и той же директории, и вы всегда должны создавать подпапки только для этой цели.

Это верно?

1 Ответ

0 голосов
/ 06 сентября 2018

Вам нужно решить, где находится ваш корневой каталог, запустить GHCi из этого каталога, а затем последовательно назвать все ваши модули относительно этого же каталога.

Вам необходимо последовательно называть свои модули как в декларации модуля (module Foo where...) , так и в операторах импорта (import Foo).

Так что вам нужно либо :

module Test.Test1 where

import Test.Data.Test3
import Test.Data.Test4
import Test.Test2

или запустите GHCi изнутри Test и удалите все префиксы Test. Но вы не можете иметь префикс для некоторых, но не для других. Вы должны быть последовательными везде. Каждое имя модуля - это путь к файлу от текущего каталога до исходного файла.

...