我制作了一个名为time.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
文件编译成模块?
答案 0 :(得分:56)
Time.hs
:
module Time where
...
script.hs
:
import Time
...
命令行:
ghc --make script.hs
答案 1 :(得分:16)
如果模块time.hs
与“main”模块位于同一目录中,您只需输入:
import Time
可以使用分层结构,以便您可以编写import Utils.Time
。
据我所知,你想要的方式是行不通的。
有关模块的更多信息,请参阅此处Learn You a Haskell, Making Our Own Modules。
答案 2 :(得分:0)
假设我在同一目录中有两个文件:ModuleA.hs和ModuleB.hs。
ModuleA.hs:
module ModuleA where
...
ModuleB.hs:
module ModuleB where
import ModuleA
...
我可以这样做:
ghc -I. --make ModuleB.hs
注意:模块名称和文件名必须相同。否则无法编译。像
这样的东西无法找到模块'...'
将会发生。