J'ai créé un fichier appelé time.hs
. Il contient une seule fonction qui mesure le temps d'exécution d'une autre fonction.
Est-il possible 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."
Où le temps est défini dans le '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 charger un fichier .hs
séparé. Dois-je compiler le fichier time.hs
dans un module avant de l'importer?
Time.hs
:
module Time where
...
script.hs
:
import Time
...
Ligne de commande:
ghc --make script.hs
Si le module time.hs
est situé dans le même répertoire que votre module "principal", vous pouvez simplement taper:
import Time
Il est possible d'utiliser une structure hiérarchique pour pouvoir écrire import Utils.Time
. Autant que je sache, la façon dont vous voulez procéder ne fonctionnera pas.
Pour plus d'informations sur les modules, voir ici Apprenez-vous un Haskell à fabriquer nos propres modules .
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 doivent être identiques. Sinon, il ne peut pas compiler. Quelque chose comme
Impossible de trouver le module '...'
arrivera.