सामान्य सूची-प्रसंस्करण फ़ंक्शन नामों की उत्पत्ति


11

सूचियों या सरणियों पर काम करने के लिए कुछ उच्च-क्रम के कार्यों को बार-बार अपनाया गया या फिर से अपनाया गया है। कार्यों का नक्शा , गुना [ एल | r ], और फ़िल्टर एक साथ कई प्रोग्रामिंग भाषाओं में पाए जाते हैं, जैसे कि स्कीम, ML, और पायथन, जो कि एक सामान्य पूर्वज नहीं हैं। सवाल को केंद्रित रखने के लिए मैं इन तीन नामों के साथ जा रहा हूं।

यह दिखाने के लिए कि नाम सार्वभौमिक नहीं हैं, यहां अन्य भाषाओं में समान कार्यक्षमता के लिए नामों का नमूना है। C ++ में नक्शे के बजाय ट्रांसफ़ॉर्म और फ़िल्टर के बजाय remove_if हैं (विधेय के अर्थ को उलटते हुए)। लिस्प है mapcar के बजाय नक्शा , निकालें-अगर-नहीं के बजाय फिल्टर , और कम करने के बजाय गुना (कुछ आधुनिक लिस्प वेरिएंट है मानचित्र लेकिन यह प्रकट होता है एक होने के लिए ली गई प्रपत्र ।) सी # का उपयोग करता है का चयन करें के बजाय नक्शा और कहाँ के बजायफ़िल्टर करेंLINQ के माध्यम से C # के नाम SQL से आए , और नाम परिवर्तन के बावजूद, उनकी कार्यक्षमता हास्केल से प्रभावित थी, जो स्वयं ML से प्रभावित थी।

नाम मानचित्र , गुना और फ़िल्टर व्यापक हैं, लेकिन सार्वभौमिक नहीं हैं। इससे पता चलता है कि उन्हें एक प्रभावशाली स्रोत से अन्य समकालीन भाषाओं में उधार लिया गया था। ये फ़ंक्शन नाम कहाँ से आए?


10
mapगणितीय सेट सिद्धांत से आएगा, जो इनपुट डोमेन से आउटपुट रेंज तक "मैपिंग" के रूप में सेट परिवर्तनों का वर्णन करता है।
ऐदन कलली

2
लिस्प का mapcarएक नक्शा है, कार पर (सीडीआर के बजाय)।

फोल्ड को यह नाम इसलिए मिला क्योंकि सेट थ्योरी में इसे कैटमोर्फिज्म कहा जाता है लेकिन यह बिल्कुल हास्यास्पद है। इसके अलावा एसक्यूएल शब्दावली से फिर से LINQ में फोल्ड एग्रीगेट है।
जिमी होफा

2
यह भी ध्यान दें कि जबकि उन भाषाओं में आधिकारिक रूप से सामान्य पूर्वज नहीं हैं, वहाँ बिल्कुल प्रभाव है, आगे और पीछे। जब वे पायथन और स्कीम, कॉमन लिस्प, पर्ल और (IIRC) हास्केल और एमएल को डिजाइन करना शुरू कर रहे थे, उस समय गुइडो वैन रोसुम ने अपना होमवर्क किया था।
tdammers

1
filterवास्तव में ऐसा करता है - यह डेटा को फ़िल्टर करता है। बहुत स्पष्ट लगता है।
डुकिंग

जवाबों:


4

आपकी सूची में एकमात्र सार्वभौमिक शब्द है mapऔर यह पहले से ही 1960 में लिस्प पर मूल कागज (इसकी आड़ में maplist) में दिखाई देता है। पेपर में search(AKA filter, AKA remove-if-not) भी है।

मुझे लगता है कि कारण mapसमाप्त हो गया है जबकि अन्य लोगों के पास वैरिएंट है जो अपेक्षाकृत प्राचीन, स्थापित, सामान्य और प्राथमिक गणित mapसे आता है जबकि (AKA AKA & c) एक अपेक्षाकृत उन्नत अवधारणा है, जो अपेक्षाकृत अस्पष्ट हाल ही में विकसित हुई है (CS या डोमेन के साथ कमोबेश) , और यह एक दशक से अधिक के लिए लिस्प में उपलब्ध होने पर (1980 के दशक के अंत में) पेश किया गया था ।catamorphismreducefoldreduce

अन्य ( filterAKA remove-if-not) CS / प्रोग्रामिंग में और भी अधिक तदर्थ हैं, इसलिए लोगों ने उनके लिए अपना नाम चुनना और भी अधिक आरामदायक महसूस किया।


1
अस्पष्ट रूप से श्रेणी सिद्धांत को "हाल ही में विकसित डोमेन के रूप में अस्पष्ट" के रूप में भी देखें, यह लैंबडा पथरी के रूप में "हाल ही में विकसित" के रूप में है
दान डी।

@DanD .: कुंजी शब्द है अपेक्षाकृत
एसडीएस

फिर भी, वे सभी .NET में खराब हो गए ताकि वे SQL के समान हो जाएं। (नक्शा -> चयन; फ़िल्टर -> कहाँ; गुना -> अलग करना)
स्टीवन एवर्स १५'१३
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.