72 Stimmen

Wie importiere ich eine .hs-Datei in Haskell?

Ich habe eine Datei namens time.hs . Sie enthält eine einzige Funktion, die die Ausführungszeit einer anderen Funktion misst.

Gibt es eine Möglichkeit zum Importieren der time.hs Datei in ein anderes Haskell-Skript?

Ich möchte etwas wie:

module Main where
import C:\Haskell\time.hs

main = do
    putStrLn "Starting..."
    time $ print answer
    putStrLn "Done."

Die Zeit ist in der Datei "time.hs" wie folgt definiert:

module time where
Import <necessary modules>

time a = do
start <- getCPUTime
v <- a
end   <- getCPUTime
let diff = (fromIntegral (end - start)) / (10^12)
printf "Computation time: %0.3f sec\n" (diff :: Double)
return v

Ich weiß nicht, wie ich eine separate Datei importieren oder laden kann. .hs Datei. Muß ich die Datei time.hs Datei vor dem Importieren in ein Modul?

67voto

yairchu Punkte 21749

Time.hs :

module Time where
...

script.hs :

import Time
...

Befehlszeile:

ghc --make script.hs

0 Stimmen

Ich habe auf Umwegen gelernt, dass in diesem Beispiel script.hs muss sich in Ihrem aktuellen Arbeitsverzeichnis befinden. Das heißt, Sie können nicht ghc --make path/to/script.hs zum Beispiel.

16voto

Christian Punkte 4139

Wenn das Modul Time.hs im selben Verzeichnis wie Ihr "Hauptmodul" befindet, können Sie einfach eingeben:

import Time

Es ist möglich, eine hierarchische Struktur zu verwenden, so dass Sie Folgendes schreiben können import Utils.Time . Soweit ich weiß, funktioniert das nicht so, wie Sie es wollen.

Weitere Informationen über Module finden Sie hier Lernen Sie Haskell, indem Sie unsere eigenen Module erstellen .

4voto

uol3c Punkte 539

Angenommen, ich habe zwei Dateien im selben Verzeichnis: ModulA.hs und ModulB.hs.

ModulA.hs:

module ModuleA where
...

ModulB.hs:

module ModuleB where

import ModuleA
...

Ich kann das tun:

    ghc -I. --make ModuleB.hs

Anmerkung: Der Modulname und der Dateiname müssen übereinstimmen. Sonst kann es nicht kompiliert werden. Etwas wie

Das Modul '...' konnte nicht gefunden werden.

auftreten wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X