2010-01-26 13 views
62

नक्शा समारोह दो इनपुट पैरामीटर है क्या है। पहला पैरामीटर एक फ़ंक्शन है और दूसरा पैरामीटर एक सूची है। नक्शा फ़ंक्शन सूची में सभी तत्वों के लिए इनपुट पैरामीटर के रूप में पारित फ़ंक्शन को लागू करता है और एक नई सूची देता है।हास्केल में नक्शा समारोह के सी # बराबर हास्केल में

इस कार्यक्षमता के लिए एक सी बराबर # है?

+1

आप की जाँच करने के लिए एफ # कर सकते हैं। यह सी # और हास्केल के बीच के अंतर को पुल करता है। – ChaosPandion

+2

वास्तव में नहीं। यह ".NET के लिए ओकेएमएल" की तरह है। – jrockway

+2

उल्लेख नहीं है कि सभी एमएल-पारिवारिक भाषाओं (एफ # और हास्केल समेत) किसी भी सी-पारिवारिक भाषा की तुलना में एक-दूसरे के साथ तर्कसंगत हैं; कोई भी जो एफ # को संभाल सकता है, वह शायद हास्केल या ओकैमल को भी संभाल सकता है। –

उत्तर

74

Select

MSDN Reference

(केवल यदि आप उत्सुक हैं के रूप में यह सीधे संबंधित नहीं है) मेरे सवाल here देखें।

+8

धन्यवाद ... यह थोड़ा सा अंतर्ज्ञानी है, मैं सोच रहा था कि चयन संग्रह से पंक्तियों को फ़िल्टर करेगा। –

+7

मुझे उम्मीद है कि आप मेरा प्रश्न देखेंगे। – ChaosPandion

+1

बीएम: फ़िल्टरिंग कहां से आता है। –

10

और एक सवाल आप से पूछना नहीं था जवाब देने के लिए, "अनुक्रम" इकाई बंधन की हास्केल बराबर SelectMany सी # में कहा जाता है। जानकारी के लिए इस पर वेस डायर के महान लेख देखें: foldAggregate के रूप में पाया जाता है:

http://blogs.msdn.com/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx

+1

अपडेटेड लिंक - https://blogs.msdn.microsoft.com/wesdyer/2008/01/10/the-marvels-of-monads/ –

13

Select के बाद से और SelectMany पहले ही उल्लेख किया गया है, मैं एक अतिरिक्त प्रश्न आप से पूछना नहीं था जवाब देंगे।

अब यह सब पढ़ने के लिए पूरी तरह सुसज्जित होना चाहिए जो उस भाषा को भाषा वाई idioms का उपयोग करके भाषा एक्स लिखता है ... इसलिए अपने साथी सी # प्रोग्रामर के लिए, भी नहीं मिला।

+4

अब कैमकैन, आपके टूलबॉक्स में एक कार्यात्मक रिंच फेंकने में कुछ भी गलत नहीं है, भले ही आप अनिवार्य रूप से नाखूनों को हथियार दे रहे हैं। आपको कुछ बोल्ट कसना पड़ सकता है। – ChaosPandion

+4

@camccan Functional C# वास्तव में बहुत अच्छा है। सिर्फ इसलिए कि भाषा सख्ती से कार्यात्मक नहीं है इसका मतलब यह नहीं है कि अधिकांश नेट प्रोग्रामर चीजों को * बहुत * अधिक कार्यात्मक रूप से बनाने से लाभ नहीं उठाएंगे। –

+3

कार्यात्मक प्रोग्रामिंग सुविधाओं का उपयोग करना जो सी # ऑफ़र एक अच्छा विचार है।कार्यात्मक मुहावरे में सी # को मजबूर करना कि यह अच्छी तरह से समर्थन नहीं करता है (कहें, घुमावदार आंशिक अनुप्रयोग जैसा कि हास्केल में इतना लोकप्रिय है), दूसरी तरफ, शायद आपको सिरदर्द मिलेगा, आपके कोड को खराब कर देगा, और किसी और को परेशान करेगा जो काम करना है इसके साथ। –

17

एक अन्य विकल्प Select और SelectMany करने के लिए अपने स्वयं के एक्सटेंशन विधि लिखने के लिए है।

public static IEnumerable<U> Map<T, U>(this IEnumerable<T> s, Func<T, U> f) 
{ 
    foreach (var item in s) 
    yield return f(item); 
} 

धन्यवाद इस मीठे विस्तार विधि के लिए वेस डायर! :) अधिक जानकारी के लिए post देखें।

3

कैसे ConvertAll के बारे में? यह नक्शा के करीब निकट दिखता है।

संबंधित मुद्दे