2009-09-17 14 views
52

bir .hs dosyası nasıl alınır time.hs adlı bir dosya yaptım. Yürütme süresini başka bir işlevi ölçen tek bir işlev içerir.Hashell

time.hs dosyasını başka bir Haskell komut dosyasına içe aktarmanın bir yolu var mı? Ben ithal veya yük nasıl bilmiyorum

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 

: Zaman olarak 'time.hs' tanımlanmıştır

module Main where 
import C:\Haskell\time.hs 

main = do 
    putStrLn "Starting..." 
    time $ print answer 
    putStrLn "Done." 

:

Ben böyle bir şey istiyorum Ayrı bir .hs dosyası. time.hs dosyasını içe aktarmadan önce bir modülde derlemem gerekir mi?

cevap

52

Time.hs:

module Time where 
... 

script.hs:

import Time 
... 

Komut satırı:

ghc --make script.hs 
14

modül time.hs "ana" modülü ile aynı dizinde bulunuyorsa, siz sadece yazabilirsiniz:

import time 

Hiyerarşik bir yapı kullanmak mümkündür, böylece import utils.time yazabilirsiniz. Bildiğim kadarıyla, bunu yapmak istediğiniz şekilde çalışmayacaksınız.

Modüller hakkında daha fazla bilgi için, bkz. Learn You a Haskell, Making Our Own Modules.

+0

bu bir tür, içe aktarma 'Zaman' doğrudur sanırım. – mrsteve

0

Aynı dizinde iki dosya var mı var: ModuleA.hs ve ModuleB.hs.

ModuleA.hs:

Module ModuleA where 
... 

ModuleB.hs:

Module ModuleB where 

import ModuleA 
... 

ben bunu yapabilirsiniz:

ghc -I. --make ModuleB.hs 

Not, modül adı ve dosya adı gerekir aynı Ol. Aksi takdirde derleyemez.

gibi bir şey modülünü bulunamadı '...'

ortaya çıkar.