Haskell Language
जीएचसीआई का उपयोग करना
खोज…
टिप्पणियों
GHCI इंटरैक्टिव REPL है जो GHC के साथ बंडल में आता है।
जीएचसीआई शुरू
GHCI शुरू करने के लिए शेल प्रॉम्प्ट पर ghci
टाइप करें।
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
Prelude>
GHCi डिफ़ॉल्ट प्रॉम्प्ट को बदलना
डिफ़ॉल्ट रूप से, GHCI का संकेत उन सभी मॉड्यूल को दिखाता है जिन्हें आपने अपने इंटरैक्टिव सत्र में लोड किया है। यदि आपके पास कई मॉड्यूल लोड हैं तो यह लंबा हो सकता है:
Prelude Data.List Control.Monad> -- etc
:set prompt
कमांड इस इंटरैक्टिव सत्र के लिए प्रॉम्प्ट को बदल देता है।
Prelude Data.List Control.Monad> :set prompt "foo> "
foo>
प्रॉम्प्ट को स्थायी रूप से बदलने के लिए , GHCi कॉन्फ़िग फ़ाइल में :set prompt "foo> "
जोड़ें।
GHCi कॉन्फ़िगरेशन फ़ाइल
GHCi ~/.ghci
में कॉन्फ़िगरेशन फ़ाइल का उपयोग करता है। एक कॉन्फ़िगरेशन फ़ाइल में कमांड का एक क्रम होता है जिसे GHCi स्टार्टअप पर निष्पादित करेगा।
$ echo ":set prompt \"foo> \"" > ~/.ghci
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from ~/.ghci
foo>
एक फ़ाइल लोड हो रही है
:l
या :load
कमांड टाइप-चेक लोड करें और एक फाइल लोड करें।
$ echo "f = putStrLn \"example\"" > example.hs
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
ghci> :l example.hs
[1 of 1] Compiling Main ( example.hs, interpreted )
Ok, modules loaded: Main.
ghci> f
example
छोड़ने GHCi
आप जीएचसीआई को केवल साथ छोड़ सकते हैं :q
या :quit
ghci> :q
Leaving GHCi.
ghci> :quit
Leaving GHCi.
वैकल्पिक रूप से, शॉर्टकट CTRL + D (OSX के लिए Cmd + D ) का समान प्रभाव है :q
।
पहले से लोड की गई फ़ाइल को पुनः लोड करना
यदि आपने GHCi में फ़ाइल लोड की है (जैसे :l filename.hs
का उपयोग करके) और आपने फ़ाइल को GHCi के बाहर के संपादक में बदल दिया है, तो आपको फ़ाइल का पुनः लोड करना होगा :r
परिवर्तन का उपयोग करने के लिए :r
या :reload
करें, इसलिए आपको फिर से फ़ाइल नाम लिखने की आवश्यकता नहीं है।
ghci> :r
OK, modules loaded: Main.
ghci> :reload
OK, modules loaded: Main.
जीएचसीआई के साथ ब्रेकप्वाइंट
GHCi व्याख्यात्मक कोड (कोड जो :loaded
) के साथ बॉक्स से बाहर अनिवार्य शैली के ब्रेकप्वाइंट का समर्थन करता है।
निम्नलिखित कार्यक्रम के साथ:
-- mySum.hs
doSum n = do
putStrLn ("Counting to " ++ (show n))
let v = sum [1..n]
putStrLn ("sum to " ++ (show n) ++ " = " ++ (show v))
GHCi में लोड किया गया:
Prelude> :load mySum.hs
[1 of 1] Compiling Main ( mySum.hs, interpreted )
Ok, modules loaded: Main.
*Main>
अब हम लाइन नंबर का उपयोग करके ब्रेकपॉइंट सेट कर सकते हैं:
*Main> :break 2
Breakpoint 0 activated at mySum.hs:2:3-39
और GHCi प्रासंगिक लाइन पर रुक जाएगा जब हम फ़ंक्शन चलाते हैं:
*Main> doSum 12
Stopped at mySum.hs:2:3-39
_result :: IO () = _
n :: Integer = 12
[mySum.hs:2:3-39] *Main>
यह भ्रमित हो सकता है कि हम कार्यक्रम में कहां हैं, इसलिए हम उपयोग कर सकते हैं :list
स्पष्ट करने के लिए :list
:
[mySum.hs:2:3-39] *Main> :list
1 doSum n = do
2 putStrLn ("Counting to " ++ (show n)) -- GHCi will emphasise this line, as that's where we've stopped
3 let v = sum [1..n]
हम चर प्रिंट कर सकते हैं, और निष्पादन भी जारी रख सकते हैं:
[mySum.hs:2:3-39] *Main> n
12
:continue
Counting to 12
sum to 12 = 78
*Main>
मल्टी-लाइन स्टेटमेंट
:{
निर्देश मल्टी-लाइन मोड शुरू करता है और :}
इसे समाप्त करता है। मल्टी-लाइन मोड में जीएचसीआई सेमीकॉलन के रूप में नए निर्देशों की व्याख्या करेगा, न कि एक निर्देश के अंत के रूप में।
ghci> :{
ghci| myFoldr f z [] = z
ghci| myFoldr f z (y:ys) = f y (myFoldr f z ys)
ghci| :}
ghci> :t myFoldr
myFoldr :: (a -> b -> b) -> b -> [a] -> b