में समानता की क्षमता मेरे पास एक ऐसा फ़ंक्शन है जो डेटा लेता है और या तो एक ही डेटा या थोड़ा संशोधित संस्करण देता है।हास्केल
मैं अपना प्रोग्राम एक चीज करना चाहता हूं अगर यह बदल गया हो या दूसरी चीज अगर यह नहीं बदली।
पहले मैं एक जोड़ी (Bool,Object)
लौटा रहा था और यह देखने के लिए fst
का उपयोग कर रहा था या नहीं। हाल ही में यह मेरे लिए हुआ कि मैं ऑब्जेक्ट को वापस करके और ==
का उपयोग करके समानता की जांच करके कोड को सरल बना सकता हूं।
लेकिन फिर मुझे एहसास हुआ कि हास्केल गहरी समानता जांच और "ऑब्जेक्ट पहचान" (यानी, पॉइंटर समानता) के बीच अंतर नहीं करता है। तो मैं कैसे जान सकता हूं कि ==
का उपयोग कुशल या नहीं होगा? क्या मुझे दक्षता कारणों से बचाना चाहिए, या ऐसे मामले हैं जहां मैं संकलक पर निर्भर कर सकता हूं कि यह गहरा समानता जांच करने की आवश्यकता नहीं है?
आम तौर पर मैं प्रारंभिक कार्यक्रम लिखते समय दक्षता के बारे में चिंतित नहीं होता, लेकिन यह मेरे मॉड्यूल में इंटरफ़ेस को प्रभावित करता है, इसलिए मैं इसे बहुत अधिक कोड लिखने से पहले ठीक करना चाहता हूं, और यह इसके लायक नहीं है केवल कोड के एक छोटे टुकड़े के लिए कार्यक्रम को बहुत कम कुशल बनाते हैं। इसके अलावा, मैं एक बेहतर विचार प्राप्त करना चाहता हूं कि जीएचसी पर मुझे किस तरह के अनुकूलन पर निर्भर किया जा सकता है।
बस एक नोट के रूप में, यह किसी भी 'या तो' मूल्य या कुछ समकक्ष के लिए एक बेहतर मामला जैसा लगता है लेकिन अधिक अर्थपूर्ण (उदा। 'डेटा चेंजस्टेट ए = वही ए | बदल गया ए')। – Chuck
कोई बुरा विचार नहीं, ध्यान दिया। – Steve