简体   繁体   中英

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?

Time.hs :

module Time where
...

script.hs :

import Time
...

Command line:

ghc --make script.hs

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 .

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM