2009-09-17 57 views
52

我製作了一個名爲time.hs的文件。它包含一個函數,用於度量另一個函數的執行時間。如何在Haskell中導入.hs文件

有沒有辦法將time.hs文件導入到另一個Haskell腳本中?

我想是這樣的:

module Main where 
import C:\Haskell\time.hs 

main = do 
    putStrLn "Starting..." 
    time $ print answer 
    putStrLn "Done." 

當時間在 'time.hs' 中定義爲:

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 

我不知道如何導入或負載一個單獨的.hs文件。在導入之前是否需要將time.hs文件編譯到模塊中?

回答

52

Time.hs

module Time where 
... 

script.hs

import Time 
... 

命令行:

ghc --make script.hs 
14

如果模塊time.hs位於相同的目錄中的 「主」 模塊,你可以簡單鍵入:

import time 

可以使用分層結構,以便您可以編寫import utils.time。 據我所知,你想做的方式不會奏效。

有關模塊的更多信息,請參見Learn You a Haskell, Making Our Own Modules

+0

這是一個類型,我想,導入'時間'是正確的。 – mrsteve 2014-11-17 09:39:09

0

說我有兩個文件在同一目錄:ModuleA.hs和ModuleB.hs。

ModuleA.hs:

Module ModuleA where 
... 

ModuleB.hs:

Module ModuleB where 

import ModuleA 
... 

我可以這樣做:

ghc -I. --make ModuleB.hs 

注意,模塊名稱和文件名必須是相同的。否則它不能編譯。像

東西找不到模塊 '...'

會發生。