2009-09-17 9 views
52

J'ai créé un fichier appelé time.hs. Il contient une seule fonction qui mesure le temps d'exécution d'une autre fonction.Comment importer un fichier .hs dans Haskell

Existe-t-il un moyen d'importer le fichier time.hs dans un autre script Haskell?

Je veux quelque chose comme:

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

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

Lorsque le temps est défini dans les 'time.hs' comme:

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 

Je ne sais pas comment importer ou de la charge un fichier séparé .hs. Dois-je compiler le fichier time.hs dans un module avant de l'importer?

Répondre

52

Time.hs:

module Time where 
... 

script.hs:

import Time 
... 

Ligne de commande:

ghc --make script.hs 
14

Si le module time.hs est situé dans le même répertoire que votre module "principal", vous peut simplement taper:Il est possible d'utiliser une structure hiérarchique, de sorte que vous pouvez écrire import utils.time. Pour autant que je sache, la façon dont vous voulez le faire ne fonctionnera pas.

Pour plus d'informations sur les modules, voir ici Learn You a Haskell, Making Our Own Modules.

+0

c'est un type, l'importation 'Time' est correct, je suppose. – mrsteve

0

Disons que j'ai deux fichiers dans le même répertoire: ModuleA.hs et ModuleB.hs.

ModuleA.hs:

Module ModuleA where 
... 

ModuleB.hs:

Module ModuleB where 

import ModuleA 
... 

Je peux le faire:

ghc -I. --make ModuleB.hs 

Remarque, le nom du module et le nom du fichier doit être le même. Sinon, il ne peut pas compiler. Quelque chose comme

Impossible trouver le module '...'

se produira.

Questions connexes