2013-03-18 5 views
7

मैं सिर्फ हास्केल सीखना शुरू कर रहा हूं, और एक हास्केल प्रोग्राम के 'प्रवाह' को समझने में कठिनाई हो रही है।ghci को एक स्क्रिप्ट कैसे लोड करें?

अजगर में उदाहरण के लिए, मैं एक पटकथा लिखने के दुभाषिया के लिए इसे लोड और परिणाम देख सकते हैं:

def cube(x): 
    return x*x*x 

print cube(1) 
print cube(2) 
print cube(cube(5)) 
# etc... 

हास्केल में मैं यह कर सकता: runhaskell साथ

cube x = x*x*x 
main = print (cube 5) 

लोड यह और यह 125 प्रिंट करेगा।
या मैं ghci का उपयोग करें और मैन्युअल रूप से सभी कार्यों मैं परीक्षण करना चाहते हैं टाइप कर सकते हैं

लेकिन क्या मैं चाहता हूँ मेरी पाठ संपादक का उपयोग करने के लिए, कार्यों के एक जोड़े, कुछ परीक्षण लिखते हैं, और हास्केल है कुछ परिणाम वापस प्रिंट है:

-- Compile this part 
cube x = x*x*x 

-- evaluate this part: 
cube 1 
cube 2 
cube (cube 3) 
--etc.. 

यह संभव तरह कुछ है?

उत्तर

7
cube x = x*x*x 

main = do 
    print $ cube 1 
    print $ cube 2 
    print $ cube (cube 3) 
$ ghci cube.hs 
... 
ghci> main 

GHCI user guide देखें।


मैं भी QuickCheck लाइब्रेरी की जांच करने की अत्यधिक अनुशंसा करता हूं।

आप इस बात से हैरान होंगे कि इसके साथ कितना शानदार परीक्षण हो सकता है।

+5

तुम भी उपयोग कर सकते हैं का उपयोग करें: एल (या: लोड) अगर आपके GHCi पहले से ही चल रहा है, जो मेरा होता है। –

+0

यह धन्यवाद काम करता है :) यह जांचने की ज़रूरत है कि '$' क्या करें! बीटीडब्ल्यू: क्या कमांड लाइन से लोड करना और मुख्य मूल्यांकन करना संभव है? पूर्व: ghci घन: मुख्य भागो! – andsoa

+1

@andsoa [this] (http://www.haskell.org/hoogle/?hoogle=%24) आपको कठिन गुगलिंग के कुछ मिनट बचाएगा :) – ulidtko

14

बहुत संभव है!

$ ghci 
> :l filename.hs 

वह फ़ाइल लोड करेगा, और फिर आप सीधे फ़ंक्शंस का उपयोग कर सकते हैं।

> :r 

इससे संपादन करने के बाद फ़ाइल को पुनः लोड किया जाएगा। फ़ाइल का जिक्र करने की कोई ज़रूरत नहीं है, जो भी आपने लोड किया था, वह फिर से लोड करेगा। यदि आप की बजाय शुरुआत में ghci filename.hs करते हैं तो यह भी काम करेगा।

संबंधित मुद्दे