web-dev-qa-db-fra.com

Comment importer un fichier .hs dans 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.

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?

55
Jonno_FTW

Time.hs:

module Time where
...

script.hs:

import Time
...

Ligne de commande:

ghc --make script.hs
56
yairchu

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 .

16
Christian

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.

0
Jee lee