2009-09-17 1 views
52

Я создал файл с именем time.hs. Он содержит единственную функцию, которая измеряет время выполнения другой функции.Как импортировать файл .hs в Haskell

Есть ли способ импортировать файл 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

это тип, импорт 'Time' правильный, я думаю. – mrsteve

0

Скажем, у меня есть два файла в одном каталоге: ModuleA.hs и ModuleB.hs.

ModuleA.hs:

Module ModuleA where 
... 

ModuleB.hs:

Module ModuleB where 

import ModuleA 
... 

я могу это сделать:

ghc -I. --make ModuleB.hs 

Примечание, имя модуля и имя файла должно быть одинаковым. В противном случае он не может скомпилироваться. Что-то вроде

Не удалось найти модуль '...'

будет происходить.

Смежные вопросы