Подтвердить что ты не робот

Как импортировать файл .hs в Haskell

Я создал файл под названием 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 в модуль перед импортом?

4b9b3361

Ответ 1

Time.hs:

module Time where
...

script.hs:

import Time
...

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

ghc --make script.hs

Ответ 2

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

import time

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

Подробнее о модулях см. здесь Изучите Haskell, создав наши собственные модули.

Ответ 3

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

ModuleA.hs:

Module ModuleA where
...

ModuleB.hs:

Module ModuleB where

import ModuleA
...

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

    ghc -I. --make ModuleB.hs

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

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

.