2010-11-13 1 views
5

Ich bin neu in Haskell. Wie kommt es, wenn ich versuche Days von Data.Time verwende ich diese Fehlermeldung erhalten:Importieren von Haskell Modulen

Could not find module `Data.Time': 
     It is a member of the hidden package `time-1.1.4'. 
     Perhaps you need to add `time' to the build-depends in your .cabal file. 

I Data.List und Control.Monad bin importieren, und weder gibt mir diese Fehlermeldung, aber der Code import Data.Time tut.

Was fehlt mir?

Danke für die Hilfe!

EDIT: Ich bin eine ähnliche Fehlermeldung erhalten, wenn ich benutze: import Directory

Danke Jungs, Ihre Antworten haben mich auf dem richtigen Weg!

+2

Von der Fehlermeldung nehme ich an, dass Sie Cabal verwenden, um Ihr Projekt zu erstellen. In diesem Fall müssen Sie die Pakete auflisten, von denen Ihr Projekt abhängig ist, in seiner Kabaldatei. Ich denke, die Syntax ist etwas wie "build-depends: time, directory"; Ich bin mir sicher, dass jemand hier die genaue Syntax kennt, wenn das nicht stimmt. –

+0

Ich habe Leksah benutzt. Vielleicht ist es Cabal hinter den Kulissen und ich muss den Build manuell konfigurieren ??? –

Antwort

10

Starten Sie Leksah mit diesem Projekt, öffnen Sie das Paketmenü und wählen Sie "Paket bearbeiten" aus. Wählen Sie nun "Abhängigkeiten" und fügen Sie die benötigte Abhängigkeit hinzu (in Ihrem Fall time). Sie können auch eine Version auswählen.

PS: Vergessen Sie nicht, den "Speichern" Knopf danach zu drücken. (Ich denke, das ist ein Konstruktionsfehler ...).

4

Bearbeiten Sie einfach die Projekte .cabal Datei, in der Regel im obersten Verzeichnis mit dem Namen ProjectName.cabal und finden Sie die Zeile (n) mit "build-depends:" und "time" zu dieser Liste hinzufügen. Keine Notwendigkeit für Leksah, es sei denn, du benutzt es bereits.

EDIT: Um Ihre Frage nach dem „Warum jetzt und nicht mit Modul X“ beantworten

Data.Time im time Paket ist, die offenbar nicht in Ihren Build-Abhängigkeiten enthalten ist. Ähnliche Geschichte für das Modul Directory. Sie erhalten diese Fehler nicht mit Data.List oder Control.Monad, weil sie Teil des base Pakets sind, das ich wetten werde, ist in Ihren Build-Deps.

Nebenbei bemerkt, es lohnt sich einige Zeit zu lernen, welche Module in base sind und welche Funktionalität diese Module bieten. Base ist ziemlich groß und sehr nützlich.