क्या फ़ंक्शन के परिणाम ज्ञात होने पर जीएचसीआई डीबगर को रोकना संभव है? अबमध्यवर्ती परिणामों को खोजने के लिए जीएचसीआई ब्रेकपॉइंट डीबगर का उपयोग करें?
blabla :: [Int] -> Int
bla :: Int -> Int
papperlap :: Int -> Int -> Int
bla x = x+x
papperlap y x = ((y *) . bla) x
blabla xs = foldl papperlap 0 x
, मैं 'papperlap' और 'bla' के परिणाम देखने के लिए करना चाहते हैं:
उदाहरण के लिए, निम्नलिखित स्निपेट पर विचार करें। लेकिन याद रखें कि जब परिणाम का मूल्यांकन किया जाता है तो मैं रुकना चाहता हूं। इसलिए 'बल' का उपयोग प्रश्न से बाहर है क्योंकि यह मूल्यांकन के क्रम को बदलता है।
जब मैं 'ब्रेक' का उपयोग करता हूं तो डीबगर बंद हो जाता है लेकिन _result का अभी तक मूल्यांकन नहीं किया गया है। कृपया मेरे GHCi सत्र नीचे खोजने के लिए है, जो वांछित मध्यवर्ती परिणाम नहीं करता है:
GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main (bla1.hs, interpreted)
Ok, modules loaded: Main.
*Main> :break blabla
Breakpoint 0 activated at bla1.hs:7:1-36
*Main> :break papperlap
Breakpoint 1 activated at bla1.hs:6:1-31
*Main> :break bla
Breakpoint 2 activated at bla1.hs:5:1-19
*Main> blabla [1,2,3]
Stopped at bla1.hs:7:1-36
_result :: Int = _
[bla1.hs:7:1-36] *Main> :step
Stopped at bla1.hs:7:17-36
_result :: Int = _
xs :: [Int] = [1,2,3]
[bla1.hs:7:17-36] *Main> :step
Stopped at bla1.hs:6:1-31
_result :: Int = _
[bla1.hs:6:1-31] *Main> :step
Stopped at bla1.hs:6:17-31
_result :: Int = _
x :: Int = 3
y :: Int = _
[bla1.hs:6:17-31] *Main> :step
Stopped at bla1.hs:6:1-31
_result :: Int = _
[bla1.hs:6:1-31] *Main> :step
Stopped at bla1.hs:6:17-31
_result :: Int = _
x :: Int = 2
y :: Int = _
[bla1.hs:6:17-31] *Main> :step
Stopped at bla1.hs:6:1-31
_result :: Int = _
[bla1.hs:6:1-31] *Main> :step
Stopped at bla1.hs:6:17-31
_result :: Int = _
x :: Int = 1
y :: Int = 0
[bla1.hs:6:17-31] *Main> :step
Stopped at bla1.hs:5:1-19
_result :: Int = _
[bla1.hs:5:1-19] *Main> :step
Stopped at bla1.hs:5:17-19
_result :: Int = _
x :: Int = 1
[bla1.hs:5:17-19] *Main> :step
Stopped at bla1.hs:5:1-19
_result :: Int = _
[bla1.hs:5:1-19] *Main> :step
Stopped at bla1.hs:5:17-19
_result :: Int = _
x :: Int = 2
[bla1.hs:5:17-19] *Main> :step
Stopped at bla1.hs:5:1-19
_result :: Int = _
[bla1.hs:5:1-19] *Main> :step
Stopped at bla1.hs:5:17-19
_result :: Int = _
x :: Int = 3
[bla1.hs:5:17-19] *Main> :step
0
*Main>
आपके उत्तर के लिए धन्यवाद। हालांकि, सख्त मूल्यांकन पर स्विच करना मेरी इच्छा नहीं है, उस स्थिति में मैं 'बल' का भी उपयोग कर सकता हूं। मेरा इरादा 'ब्लै' और 'पेपरपरैप' के परिणाम का निरीक्षण करने में सक्षम होना है जब उनके परिणाम मूल्यों का मूल्यांकन किया गया है। और परिणाम प्राप्त करने के लिए: 'bla 1 = 2; papperlap 0 1 = 0; ब्लै 2 = 4; papperlap 0 2 = 0; ब्लै 3 = 6; papperlap 0 3 = 0; ब्लब्ला [1,2,3] = 0' –