क्या हैकेल में कमी चरणों को देखने का कोई तरीका है, यानी रिकर्सिव फ़ंक्शन कॉल का पता लगाया गया है? उदाहरण के लिए, चेज़ योजना हमें ट्रेस-लैम्ब्डा प्रदान करती है। क्या हास्केल में समकक्ष रूप है?हास्केल में कमी चरण देखें
उत्तर
आप उन स्थानों पर Debug.Trace.trace
डालने का प्रयास कर सकते हैं, जहां आप ट्रेस करना चाहते हैं, लेकिन इसमें (ए) जंगली रूप से बाहर आउटपुट आउटपुट का उत्पादन करने की प्रवृत्ति है, क्योंकि आपका ट्रेस स्टेटमेंट उस थंक से संबंधित हो सकता है जिसका मूल्यांकन अभी तक नहीं किया जाता है मूल कॉल से बहुत दूर, और (बी) आपके प्रोग्राम के रनटाइम व्यवहार को बदलना, अगर ट्रेसिंग को उन चीजों का मूल्यांकन करने की आवश्यकता है जो अन्यथा मूल्यांकन नहीं किए गए हैं (अभी तक)।
क्या यह डिबगिंग के लिए है?
Hat उत्पादन ट्रेसिंग जो चलाने के बाद देखी जा सकती है करने के लिए अपने स्रोत कोड को संशोधित करता है यदि ऐसा है तो ...। उत्पादन बहुत आप क्या चाहते हैं के करीब होना चाहिए: अपने मुखपृष्ठ पर उदाहरण
उदाहरण के लिए, दोषपूर्ण कार्यक्रम
main = let xs :: [Int] xs = [4*2,5 `div` 0,5+6] in print (head xs,last' xs) last' (x:xs) = last' xs last' [x] = x
की गणना है परिणाम देता है
(8, No match in pattern.
और हैट देखने के उपकरण का उपयोग इसके व्यवहार का पता लगाने के लिए किया जा सकता है:
- हैट-ढेर
गर्भपात संगणना के लिए, कि संगणना कि एक त्रुटि संदेश के साथ समाप्त या बाधित कर रहे थे, हैट-ढेर, जिसमें से काम फोन गणना निरस्त कर दिया गया पता चलता है। यह फ़ंक्शन कॉल (रेडएक्स) का वर्चुअल स्टैक दिखाकर ऐसा करता है। इस प्रकार, स्टैक पर दिखाए गए प्रत्येक फ़ंक्शन कॉल के ऊपर फ़ंक्शन कॉल का कारण बनता है। शीर्ष ढेर तत्व के मूल्यांकन ने त्रुटि उत्पन्न की (या इसके मूल्यांकन के दौरान गणना में बाधा डाली गई थी)। दिखाया गया ढेर वर्चुअल है, क्योंकि यह वास्तविक रनटाइम स्टैक के अनुरूप नहीं है। वास्तविक रनटाइम स्टैक आलसी मूल्यांकन सक्षम करता है जबकि वर्चुअल स्टैक एक स्टैक से मेल खाता है जिसका उपयोग उत्सुक (सख्त) मूल्यांकन के लिए किया जाएगा।
उपर दिए गए उदाहरण के कार्यक्रम का उपयोग करना, हैट-ढेर,
$ hat-stack Example Program terminated with error: No match in pattern. Virtual stack trace: (Last.hs:6) last' [] (Last.hs:6) last' [_] (Last.hs:6) last' [_,_] (Last.hs:4) last' [8,_,_] (unknown) main $
इन दिनों चलता GHCi (≥ 6.8.1) भी एक डिबगर के साथ आता है:
$ ghci -fbreak-on-exception
GHCi, version 6.10.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
Prelude> :l Example.hs
[1 of 1] Compiling Main (Example.hs, interpreted)
Example.hs:5:0:
Warning: Pattern match(es) are overlapped
In the definition of `last'': last' [x] = ...
Ok, modules loaded: Main.
*Main> :trace main
(8,Stopped at <exception thrown>
_exception :: e = _
[<exception thrown>] *Main> :back
Logged breakpoint at Example.hs:(5,0)-(6,12)
_result :: t
[-1: Example.hs:(5,0)-(6,12)] *Main> :hist
-1 : last' (Example.hs:(5,0)-(6,12))
-2 : last' (Example.hs:5:15-22)
-3 : last' (Example.hs:(5,0)-(6,12))
-4 : last' (Example.hs:5:15-22)
-5 : last' (Example.hs:(5,0)-(6,12))
-6 : last' (Example.hs:5:15-22)
-7 : last' (Example.hs:(5,0)-(6,12))
-8 : main (Example.hs:3:25-32)
-9 : main (Example.hs:2:17-19)
-10 : main (Example.hs:2:16-34)
-11 : main (Example.hs:3:17-23)
-12 : main (Example.hs:3:10-33)
<end of history>
[-1: Example.hs:(5,0)-(6,12)] *Main> :force _result
*** Exception: Example.hs:(5,0)-(6,12): Non-exhaustive patterns in function last'
[-1: Example.hs:(5,0)-(6,12)] *Main> :back
Logged breakpoint at Example.hs:5:15-22
_result :: t
xs :: [t]
[-2: Example.hs:5:15-22] *Main> :force xs
xs = []
हालांकि उतना अच्छा नहीं है, लेकिन इसका आसानी से उपलब्ध होने का लाभ है, और आपके कोड को पुन: संकलित किए बिना प्रयोग योग्य है।
गले में कमी की कमी है, अगर इससे मदद मिलती है? वैकल्पिक रूप से, क्या आप प्रत्येक कोड पर क्या कर रहे हैं, इसके बारे में अधिक जानकारी प्राप्त करने के लिए, अपने कोड को लपेटने के लिए गले हुड जैसे कुछ का उपयोग कर सकते हैं?
हास्केल मानक में कोई भी प्रकार का निर्माण नहीं किया गया है।
मुझे उम्मीद है कि Helium ग्राफिकल दुभाषिया इस तरह कुछ प्रदान करेगा, लेकिन वेब पेज इस विषय पर चुप है।
डेटा संरचनाओं को देखने के लिए vacuum का आंशिक समाधान उपयोग करना है।
मैंने फोल्ड, स्कैन और अन्य के कुछ gif एनिमेशन देखा है, लेकिन मैं उन्हें इस समय नहीं ढूंढ सकता। मुझे लगता है कि काले गिब्बार्ड ने एनिमेशन बनाया।
- 1. कतार में कमी एल्गोरिदम?
- 2. remquo: तर्क में कमी?
- 3. फेसबुक ऑफलाइन एक्सेस चरण-दर-चरण
- 4. चरण
- 5. चरण
- 6. चरण
- 7. AppEngine: चरण-दर-चरण डिबगिंग
- 8. मेवेन + जीएई चरण-दर-चरण
- 9. चरण-दर-चरण: ग्राहक आईडीई
- 10. संदर्भ स्विचिंग में चरण
- 11. SetProgressBarIndeterminateVisibility कमी
- 12. समांतर कमी
- 13. लाल आंखों में कमी एल्गोरिदम
- 14. हास्केल में रणनीतियों का उपयोग करके मैं समानांतर कमी कैसे लिखूं?
- 15. स्मृति छवि कमी
- 16. एंड्रॉइड में चरण-दर-चरण डिबगिंग के साथ कठिनाइयों।
- 17. स्प्रिंग फ्रेमवर्क में चरण-दर-चरण नमूना जेएमएस
- 18. हास्केल
- 19. कोड सूची में देखें पंक्ति ऊंचाई देखें
- 20. हास्केल
- 21. कैसे हास्केल चर भौतिकी में हास्केल में
- 22. आईओएस (फोनगैपेटिक्स) पर फोनगैप 1.2.0 में Google Analytics काम करने के लिए चरण-दर-चरण चरण
- 23. थ्रेड कमांड के चरण और चरण में चरण के लिए क्या उपयोग है?
- 24. चरण-दर-चरण एएसपी.नेट स्वचालित बिल्ड/तैनाती
- 25. राइनो मोक्स चरण-दर-चरण ट्यूटोरियल
- 26. हास्केल
- 27. मौजूदा अनुप्रयोग में एक विकास चरण के रूप में XACML
- 28. Activity.addContentView (देखें) == ViewGroup.addContentView (देखें)?
- 29. हास्केल प्लेटफ़ॉर्म
- 30. एकल चरण
योजना के साथ एक बड़ा अंतर है; हास्केल आलसी है इसलिए कॉल के बाद वास्तविक मूल्यांकन हो सकता है। – bortzmeyer