2009-09-17 6 views
52

Ho creato un file chiamato time.hs. Contiene una singola funzione che misura il tempo di esecuzione di un'altra funzione.Come importare un file .hs in Haskell

C'è un modo per importare il file time.hs in un altro script Haskell?

voglio qualcosa di simile:

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

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

casi in cui è definito il tempo negli time.hs "come:

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 

Non so come importare o del carico un file .hs separato. Devo compilare il file time.hs in un modulo prima di importarlo?

risposta

52

Time.hs:

module Time where 
... 

script.hs:

import Time 
... 

Riga di comando:

ghc --make script.hs 
14

Se il modulo time.hs si trova nella stessa directory del modulo "principale", è può semplicemente digitare:

import time 

E 'possibile utilizzare una struttura gerarchica, in modo che è possibile scrivere import utils.time. Per quanto ne so, il modo in cui vuoi farlo non funzionerà.

Per ulteriori informazioni sui moduli, vedere qui Learn You a Haskell, Making Our Own Modules.

+0

questo è un tipo, l'ora di importazione è corretta, immagino. – mrsteve

0

Dire che ho due file nella stessa directory: ModuleA.hs e ModuleB.hs.

ModuleA.hs:

Module ModuleA where 
... 

ModuleB.hs:

Module ModuleB where 

import ModuleA 
... 

posso fare questo:

ghc -I. --make ModuleB.hs 

Nota, il nome del modulo e il nome del file deve essere lo stesso. Altrimenti non può essere compilato. Qualcosa di simile

Impossibile trovare il modulo '...' si verificherà

.