आपके द्वारा वर्णित ऑपरेटर अनिवार्य रूप से map
फ़ंक्शन दो-तत्व टुपल के लिए है। map
समारोह, सामान्य रूप में (कुछ F<'a>
के लिए जो एफ # पुस्तकालयों में seq<'a>
या कई अन्य प्रकार के हो सकता है) एक हस्ताक्षर है:
map : ('a -> 'b) -> F<'a> -> F<'b>
तो, अगर आप एक दो तत्व टपल के रूप में F<'a>
को परिभाषित है, तो अपने समारोह वास्तव में है बस map
(आप तर्क फ्लिप करने पर):
type F<'a> = 'a * 'a
let map f (a, b) = (f a, f b)
आपरेशन एफ # पुस्तकालय में अंतर्निहित है नहीं कहीं भी, लेकिन यह है कि यह वास्तव में एक पैटर्न कहीं और एफ # पुस्तकालयों में बहुत आम है कि मेल खाता है महसूस करने के लिए उपयोगी है (सूची, सीईसी, सरणी, आदि)
@pad द्वारा संदर्भित हास्केल जवाब को देखते हुए - सिद्धांत रूप में, हास्केल यह संभव है कि सभी प्रकार के प्रकार कक्षाएं का उपयोग कर इस तरह के कार्य का समर्थन के लिए एक ही समारोह को परिभाषित करने के लिए बनाता है (ताकि आप सिर्फ fmap
बजाय Seq.map
या बजाय लिखते थे आपके TwoElementTuple.map
का, लेकिन यह वास्तव में विभिन्न तकनीकी कारणों से काम नहीं करता है - इसलिए हास्केलर्स को इसे अलग-अलग कॉल करने की आवश्यकता है)।
एफ # में, यह आसानी से संभव विभिन्न प्रकार के लिए एक एकल map
समारोह को परिभाषित करने के लिए है, लेकिन आप अभी भी एक map
दो तत्व के लिए tuples (आप इसे आसान यह एक प्रतीकात्मक देने के लिए लगता है, भले ही के रूप में अपने कार्य के बारे में सोच सकते हैं map
नाम के बजाय ऑपरेटर का नाम।)
स्रोत
2013-02-07 10:41:48
अच्छा अवलोकन, मैं इसे 'मानचित्र' पर नामित करने पर विचार करूंगा ... लेकिन मुझे यह मानना होगा कि मुझे पाइपिंग अर्थशास्त्र पसंद है .. – Benjol
मुझे लगता है कि यहां प्रतीकात्मक नाम का उपयोग शायद अच्छा है - यह वास्तव में आपके विशिष्ट उपयोग पर निर्भर करता है। (लेकिन मैं सामान्य रूप से प्रतीकात्मक नामों का एक बड़ा प्रशंसक नहीं हूं, क्योंकि मुझे उन्हें समझने में कठिनाई होती है।) –