Как импортировать файл .hs в Haskell - PullRequest
56 голосов
/ 17 сентября 2009

Я создал файл с именем 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 ]

56 голосов
/ 17 сентября 2009

Time.hs:

module Time where
...

script.hs:

import Time
...

Командная строка:

ghc --make script.hs
16 голосов
/ 17 сентября 2009

Если модуль time.hs находится в том же каталоге, что и ваш "основной" модуль, вы можете просто набрать:

import Time

Можно использовать иерархическую структуру, так что вы можете написать import Utils.Time. Насколько я знаю, то, как вы хотите это сделать, не сработает.

Для получения дополнительной информации о модулях, см. Здесь Изучаем вас на Haskell, делая наши собственные модули .

1 голос
/ 12 апреля 2017

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

ModuleA.hs:

module ModuleA where
...

ModuleB.hs:

module ModuleB where

import ModuleA
...

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

    ghc -I. --make ModuleB.hs

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

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

произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...