python - कार्यात्मक प्रोग्रामिंग में "आंशिक फ़ंक्शन" का वास्तव में क्या मतलब है?




haskell functional-programming (2)

मेरी समझ के अनुसार, आंशिक कार्य ऐसे कार्य हैं जो हमें किसी फ़ंक्शन से अपेक्षा से कम पैरामीटर पास करके मिलते हैं। उदाहरण के लिए, यदि यह सीधे पायथन में मान्य थे:

>>> def add(x,y):
...    return x+y
... 
>>> new_function = add(1)
>>> new_function(2)
3

ऊपर स्निपेट में, new_function एक आंशिक फ़ंक्शन है। हालांकि, हास्केल विकी के अनुसार, आंशिक कार्य की परिभाषा है

आंशिक फ़ंक्शन एक फ़ंक्शन है जो निर्दिष्ट प्रकार के सभी संभावित तर्कों के लिए परिभाषित नहीं है।

इसलिए, मेरा सवाल यह है: "आंशिक कार्य" से वास्तव में क्या अभिप्राय है?


आप यहां दो अवधारणाओं को भ्रमित कर रहे हैं। एक आंशिक रूप से लागू फ़ंक्शन [हैस्केल-विकी] एक आंशिक फ़ंक्शन [हैस्केल-विकी] के साथ

आंशिक रूप से लागू फ़ंक्शन है:

हास्केल में आंशिक आवेदन में कई तर्कों को लेने वाले फ़ंक्शन के लिए तर्कों की पूरी संख्या से कम पास करना शामिल है।

जबकि एक आंशिक समारोह वास्तव में एक गैर कुल समारोह है:

आंशिक फ़ंक्शन एक फ़ंक्शन है जो निर्दिष्ट प्रकार के सभी संभावित तर्कों के लिए परिभाषित नहीं है।


एक आंशिक फ़ंक्शन (कार्यात्मक प्रोग्रामिंग और गणित दोनों के संदर्भ में) ठीक वैसा ही है जैसा कि विकी कहता है: ऐसा फ़ंक्शन जो अपने सभी तर्क वितर्क के लिए परिभाषित नहीं है। प्रोग्रामिंग के संदर्भ में, हम आमतौर पर "परिभाषित नहीं" को कई चीजों में से एक के रूप में व्याख्या करते हैं, जिसमें अपरिभाषित व्यवहार, अपवाद या गैर-समाप्ति शामिल है।

आंशिक फ़ंक्शन का एक उदाहरण पूर्णांक विभाजन होगा, जिसे परिभाषित नहीं किया गया है यदि भाजक 0 है (हास्केल में यह एक त्रुटि फेंक देगा)।

ऊपर स्निपेट में new_function आंशिक फ़ंक्शन है।

यह कोड केवल पाइथन में एक त्रुटि का कारण होगा, लेकिन यदि यह आपके इच्छानुसार काम करता है, तो यह एक कुल (जिसका अर्थ आंशिक नहीं) फ़ंक्शन होगा।

जैसा कि टिप्पणीकारों ने पहले ही बताया है, आप इस तथ्य की सबसे अधिक संभावना सोच रहे हैं कि यह आंशिक रूप से लागू फ़ंक्शन होगा।







partial-functions