मैं कुछ नेस्टेड सूची में QuickCheck को चलाने के लिए कोशिश कर रहा हूँ, कुछ है कि इस तरह दिखता है:क्विक चेक से मुझे अच्छे (छोटे) सिंक कैसे मिलते हैं?
type Constraint = Text
data Value = Value [Constraint]
data Literal = Literal Value [Value]
type Formula = [Literal]
तो एक सूत्र शाब्दिक, जिनमें से प्रत्येक एक विधेय और कुछ तर्क होता है की एक सूची है; भविष्यवाणी/तर्क वे मान होते हैं जो प्रत्येक स्ट्रिंग फॉर्म में बाधाओं का संयोजन होते हैं। यह हमें सूचियों की सूचियों की सूची की सूची देता है, पुhew!
अगर मेरे QuickCheck संपत्ति में से एक विफल रहता है, मैं उत्पादन के एक समझ से बाहर pageful प्राप्त करते हैं। सिकुड़ने के प्रयोग से पहले, मैं मनमाने ढंग से उदाहरणों के माध्यम से इस बारे में घूमता था जो केवल छोटे (छोटे) मूल्यों का एक छोटा सा सेट उत्पन्न कर सकता था। मेरे प्रत्येक प्रकार के लिए सिकुड़ फ़ंक्शन को कार्यान्वित करना थोड़ा सा मदद करता है, लेकिन जितना मैं चाहूंगा उतना नहीं। मुझे अभी भी आउटपुट का एक पेजफुल मिलता है।
मुझे लगता है कि मैं जो छोटा करना चाहता हूं वह सचमुच की एक छोटी सूची है, जहां प्रत्येक शाब्दिक मूल्यों की एक छोटी सूची है, जिसके बदले में कुछ बाधाएं होती हैं, जिनमें से प्रत्येक जितनी छोटी हो सके उतनी छोटी होती है। लेकिन मेरे वर्तमान प्रयासों में, कम से कम इन सूचियों में आउटपुट को भयानक बनाने के लिए काफी बड़ा हो जाता है। अगर मैं अपने सिकुड़ने के कार्यान्वयन को ट्यून करने की कोशिश करता हूं, तो मुझे यह भी पता चलता है कि क्यूसी बहुत लंबा समय ले रहा है (सिकुड़ने की खोज कर रहा है?), किस तरह से प्रभावी ढंग से कम करने के मेरे प्रयासों को कम करता है।
आप QuickCheck विफलताओं को समझने के लिए जब आप इस तरह डेटा नेस्ट है की संभावनाओं को कैसे बेहतर बना सकता हूँ?
कुछ बातें मैं कोशिश की है: shrinkList हटना shrinkList shrinkNothing पसंद करते हैं, और इस [विकल्प shrinkList] (https://gist.github.com/1582767) जो अधिक तत्वों को हटाने के पक्ष में करने की कोशिश करता। मुझे संदेह है कि मैं बहुत ज्यादा मजाक कर रहा हूं और कुछ अलग तरीके से कर रहा हूं, जैसे कि मेरे मनमानी कार्यान्वयन को बदलना, या एक अलग तरीके से परीक्षण करना :-) – kowey
अभी के लिए, मैं पूर्व-संक्रमित मार्ग ('5 <$> ले रहा हूं) मनमानी'), जो कि मुझे अभी भी – kowey
के साथ बग मिल रहा है, वास्तव में कोई जवाब नहीं है, लेकिन क्या आपने क्विक चेक के बजाय स्मॉल चेक या यहां तक कि LazySmallCheck का उपयोग करने का प्रयास किया है? –