2015-02-16 9 views
7

Warum ist es üblich, Klassen- und Typdefinitionen in spezielle Typen zu setzen, anstatt sie in den entsprechenden Namespace zu platzieren?Warum ein eigenes Modul für Typen haben?

Nehmen wir zum Beispiel Config Datensatz von Yi-Quellcode. Warum wurde entschieden, es innerhalb von anstelle von Yi.Config zu definieren?

+4

Ich würde sagen, dass diese Typen oft voneinander abhängig sein können oder eine Menge Importe benötigen. Es kann sehr einfach sein, einfach eine Menge von Typen in einem '.Types'-Modul zu definieren und sie dann wieder dorthin zu exportieren, wo es sinnvoller ist. – bheklilr

+0

Ich glaube nicht, dass dies "primär auf Meinungen basiert", weil es das Ergebnis technischer Beschränkungen von GHC ist. –

Antwort

9

Es ist fast immer getan, um zirkuläre Abhängigkeiten zwischen Modulen zu vermeiden. GHC behandelt sie sehr schlecht. Sie sind theoretisch erlaubt, aber der Mechanismus ist so schmerzhaft, dass sie fast immer vermieden werden.

+1

Könnten Sie näher ausführen? vielleicht ein Beispiel? – MasterMastic

+0

Nachschlagen von "Interface-Datei (.hi-Dateien)" und "separate Kompilierung" –

Verwandte Themen