71 votes

Comment importer un fichier .hs en Haskell ?

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

Existe-t-il un moyen d'importer le 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."

Le temps est défini dans le fichier '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 séparé. .hs fichier. Dois-je compiler le time.hs dans un module avant de l'importer ?

65voto

yairchu Points 9694

Time.hs :

module Time where
...

script.hs :

import Time
...

Ligne de commande :

ghc --make script.hs

0 votes

J'ai appris à la longue que dans cet exemple script.hs doit se trouver dans votre répertoire de travail actuel. Cela signifie que vous ne pouvez pas faire ghc --make path/to/script.hs par exemple.

16voto

Christian Points 2940

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, 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 Apprendre un Haskell, créer nos propres modules .

4voto

Jee lee Points 481

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

Nota: 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 '...'.

se produira.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X