How to import a .hs file in Haskell
I have made a file called time.hs
. It contains a single function that measures the execution time another function.
Is there a way to import the time.hs
file into another Haskell script?
I want something like:
module Main where
import C:\Haskell\time.hs
main = do
putStrLn "Starting..."
time $ print answer
putStrLn "Done."
Where time is defined in the 'time.hs' as:
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
I don't know how to import or load a separate .hs
file. Do I need to compile the time.hs
file into a module before importing?
Solution 1:
Time.hs
:
module Time where
...
script.hs
:
import Time
...
Command line:
ghc --make script.hs
Solution 2:
If the module Time.hs
is located in the same directory as your "main" module, you can simply type:
import Time
It is possible to use a hierarchical structure, so that you can write import Utils.Time
.
As far as I know, the way you want to do it won't work.
For more information on modules, see here Learn You a Haskell, Making Our Own Modules.
Solution 3:
Say I have two files in the same directory: ModuleA.hs and ModuleB.hs.
ModuleA.hs:
module ModuleA where
...
ModuleB.hs:
module ModuleB where
import ModuleA
...
I can do this:
ghc -I. --make ModuleB.hs
Note: The module name and the file name must be the same. Otherwise it can't compile. Something like
Could not find module '...'
will occur.