यह "फ़ंक्शन अभिव्यक्ति की समानता" के आधार पर सटीक रूप से निर्भर करता है।
ये फ़ंक्शन बाइटकोड के रूप में समाप्त होने जा रहे हैं, इसलिए मैं उदाहरण के लिए प्रत्येक फ़ंक्शन से संबंधित बाइटकोड को बाइट [] पर डंप कर सकता हूं और फिर दो बाइटकोड सरणी की तुलना कर सकता हूं।
हालांकि, अर्थात् समकक्ष तरीके से लिखने के कई अलग-अलग तरीके हैं, जिनके बाइटकोड में समान प्रतिनिधित्व नहीं होगा।
सामान्यतः, यह बताना असंभव है कि कोड का एक टुकड़ा इसे चलाने के बिना क्या करता है। तो यह बताने में असंभव है कि कोड के दो बिट्स दोनों संभावित इनपुट पर, दोनों को चलाने के बराबर हैं या नहीं।
यह कम से कम खराब, कम्प्यूटेशनल रूप से बोल रहा है, क्योंकि समस्या निवारण समस्या और संभवतः बदतर है।
रोकथाम की समस्या उतनी ही अजीब है जितनी है, इसलिए यहां सामान्य मामला जवाब निश्चित रूप से नहीं है (न केवल क्लोजर के लिए बल्कि प्रत्येक प्रोग्रामिंग भाषा के लिए)।
असंभव - कार्यों का समकक्ष अपरिहार्य है। –
ओह, बक्षीस टिप्पणी प्रारूप के बारे में खेद है - प्रारूपण का एहसास नहीं हुआ कि वैसे ही काम नहीं करेगा। –
हाय ओमरी। यदि आप नीचे अपना जवाब देखते हैं, तो आप देखेंगे कि मैं दो कार्यों के बारे में बात करता हूं जिनके शरीर के समान JVM बाइटकोड है। यह प्रभावी रूप से आकस्मिक समानता है। मैं यह भी मुद्दा देता हूं कि अंतःविषय समानता विस्तारित समानता का तात्पर्य है (लेकिन यह कि विपरीत नहीं है)। यदि बाइटकोड अलग-अलग होता है (जैसा कि आप कुछ उदाहरणों के लिए हो सकते हैं), तो हम विस्तारित समानता प्राप्त करने की कोशिश करने के लिए वापस आ गए हैं - जैसा कि हम जानते हैं कि यह अपरिहार्य है।उम्मीद है कि चीजों को थोड़ा स्पष्ट बनाता है - अंतःविषय समानता (साथ ही कुछ विशेष मामले) शायद सबसे अच्छा है जिसके लिए हम उम्मीद कर सकते हैं। – kittylyst