Mein Verständnis ist, dass die gepunktete Syntax von Modulen in Haskell die logische Struktur auf der Festplatte darstellt. Also, wenn wir haben eine Struktur wie folgt aus:Angeben der Baumstruktur Haskell-Module
Main.hs
Foo/
Bar.hs -- exports "Bar"
Quux.hs -- exports "Quux"
... dann in unserem Main.hs
, was wir tun können:
import Foo.Bar
import Foo.Quux
(Ich gehe davon aus wir nur Module an Blattknoten des Dateisystems haben kann Zum Beispiel können wir in dem obigen Fall kein Foo
Modul haben.)
In diesem Beispiel durchlaufen wir den Baum. Was passiert, wenn wir hochgehen wollen?
lib/
SomeModule.hs
XYZ.hs
src/
Main.hs
Das heißt, in Main.hs
, wie wir importieren SomeModule
oder XYZ
?
Vielleicht wäre dies nicht üblich mit Main
, aber was ist mit Inter-Modul-Abhängigkeiten? Sie könnten berechtigt sein, auf "Cousin" -Knoten Bezug zu nehmen.
Es ist sehr üblich, Module in "Filialen" zu haben - nur z.B. Erstellen Sie '' 'Foo.hs''' im selben Verzeichnis wie Ihr' '' Foo/'' 'Verzeichnis – amindfv
Genau gesagt: Die punktierte Syntax der Module repräsentiert die logische Struktur auf der Festplatte * in GHC *. Der Bericht selbst gibt keinen Hinweis darauf, wie Module überhaupt auf der Festplatte gespeichert sind, und eine konkurrierende Implementierung könnte andere Dinge tun - eine Manifest-Datei haben, eine Datenbank verwenden, Dinge in der Cloud speichern ... –