Ответ 1
Time.hs
:
module Time where
...
script.hs
:
import Time
...
Командная строка:
ghc --make script.hs
Я создал файл под названием time.hs
. Он содержит одну функцию, которая измеряет время выполнения другой функции.
Есть ли способ импортировать файл time.hs
в другой Haskell script?
Я хочу что-то вроде:
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
в модуль перед импортом?
Time.hs
:
module Time where
...
script.hs
:
import Time
...
Командная строка:
ghc --make script.hs
Если модуль time.hs
находится в том же каталоге, что и ваш "основной" модуль, вы можете просто ввести:
import time
Можно использовать иерархическую структуру, чтобы вы могли написать import utils.time
.
Насколько я знаю, способ, которым вы хотите это сделать, не будет работать.
Подробнее о модулях см. здесь Изучите Haskell, создав наши собственные модули.
Скажем, у меня есть два файла в одном каталоге: ModuleA.hs и ModuleB.hs.
ModuleA.hs:
Module ModuleA where
...
ModuleB.hs:
Module ModuleB where
import ModuleA
...
Я могу это сделать:
ghc -I. --make ModuleB.hs
Примечание. Имя модуля и имя файла должны совпадать. В противном случае он не может скомпилироваться. Что-то вроде
Не удалось найти модуль '...'
.