如何在Haskell中导入.hs文件

时间:2009-09-17 12:07:04

标签: haskell syntax module

我制作了一个名为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文件编译成模块?

3 个答案:

答案 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

注意:模块名称和文件名必须相同。否则无法编译。像

这样的东西
  

无法找到模块'...'

将会发生。