2009-09-17 19 views
52

में .hs फ़ाइल आयात करने के लिए मैंने time.hs नामक एक फ़ाइल बनाई है। इसमें एक एकल फ़ंक्शन होता है जो निष्पादन समय को किसी अन्य कार्य को मापता है।हास्केल

क्या time.hs फ़ाइल को अन्य हास्केल स्क्रिप्ट में आयात करने का कोई तरीका है?

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

यह एक प्रकार है, आयात 'समय' सही है, मुझे लगता है। – mrsteve

0

कहें कि मेरे पास एक ही निर्देशिका में दो फ़ाइलें हैं: ModuleA.hs और ModuleB.hs।

ModuleA.hs:

Module ModuleA where 
... 

ModuleB.hs:

Module ModuleB where 

import ModuleA 
... 

मैं यह कर सकता:

ghc -I. --make ModuleB.hs 

नोट, मॉड्यूल का नाम और फ़ाइल नाम होना चाहिए ऐसे ही बनें। अन्यथा यह संकलित नहीं कर सकता है।

की तरह कुछ मॉड्यूल नहीं मिल सका '...'

हो जाएगा।