एफ # में, समानता ऑपरेटर (=) आमतौर पर आकस्मिक के बजाय विस्तारित है। एक दम बढ़िया! दुर्भाग्यवश, ऐसा लगता है कि एफ # इन विस्तारित तुलनाओं को कम करने के लिए सूचक समानता का उपयोग नहीं करता है।एफ # में शॉर्ट-कटिंग समानता जांच?
उदाहरण के लिए, इस कोड:
type Z = MT | NMT of Z ref // create a Z: let a = ref MT // make it point to itself: a := NMT a // check to see whether it's equal to itself: printf "a = a: %A\n" (a = a)
... मेरे एक बड़ा वसा विभाजन गलती देता है [*], इस तथ्य के बावजूद है कि 'एक' और 'एक' दोनों एक ही संदर्भ के लिए मूल्यांकन करते हैं। यह इतना अच्छा नहीं है। अन्य कार्यात्मक भाषाओं (उदाहरण के लिए पीएलटी योजना) पॉइंटर तुलना का उपयोग करके, सही होने पर 'सही' वापस करने के लिए, पॉइंटर तुलना का उपयोग करके निर्धारित किया जा सकता है।
तो: मैं इस तथ्य को स्वीकार करूंगा कि एफ # की समानता ऑपरेटर शॉर्ट-काटने का उपयोग नहीं करता है; क्या एक इंटेंशनल (पॉइंटर-आधारित) समानता जांच करने का कोई तरीका है? (==) ऑपरेटर को मेरे प्रकारों पर परिभाषित नहीं किया गया है, और अगर कोई मुझे बता सकता है कि यह किसी भी तरह उपलब्ध है तो मुझे यह अच्छा लगेगा।
या मुझे बताया कि मैं इस स्थिति के अपने विश्लेषण में गलत हूँ: मैं अच्छा लगेगा कि, भी ...
[*] यही कारण है कि शायद विंडोज पर एक ढेर अतिप्रवाह हो सकता है; मोनो के बारे में चीजें हैं कि मैं उस शौकीन नहीं हूं ...
धन्यवाद! एक तरफ के रूप में: हाँ, यह वास्तव में मोनो/ओएसएक्स पर कोर डंप करता है। संभवत: पूंछ-कॉलिंग का उपयोग मोनो/fsharp के विशेष संयोजन में समानता जांच के लिए उचित रूप से लागू नहीं किया गया है जिसका मैं उपयोग कर रहा हूं। –