हास्केल ने उत्पादों को उठाने का चयन क्यों किया?
आप आलस्य या अस्वीकार करने वाले पैटर्न को अपील किए बिना इस डिज़ाइन विकल्प को उचित ठहरा सकते हैं। समान डिजाइन विकल्प बहुरूपता का समर्थन करने के कारणों के लिए एमएल बनाया गया है। पर विचार करें
fst (x, y) = x
snd (x, y) = y
अब अगर (a, (b, c))
(a, b, c)
के लिए वाक्यात्मक चीनी है, यह काफी मुश्किल है देखने के लिए विशेषज्ञ के लिए कैसे fst
और snd
इस प्रकार के तर्क के रूप में लेने के लिए। लेकिन
fst :: (a, (b, c)) -> a
snd :: (a, (b, c)) -> (b, c)
पूरी तरह से उचित हैं। चूंकि fst
और snd
जैसे पॉलिमॉर्फिक फ़ंक्शन इतने अविश्वसनीय रूप से उपयोगी हैं, दोनों हास्केल और एमएल प्रोग्रामर को (a, (b, c))
और ((a, b), c)
(a, b, c)
से अलग करने की क्षमता प्रदान करते हैं।
(उन लोगों के लिए जो लागत की परवाह करते हैं, प्रकार की संरचना प्रकार के आकार और इसके तत्वों को प्राप्त करने के लिए आवश्यक संकेतों (भार) की एक उचित मार्गदर्शिका भी है। कुछ प्रोग्रामर को ऐसी चीजों के बारे में जानना या जानना चाहते हैं और उनके ऊपर कुछ छोटी मात्रा में नियंत्रण रखना है।)
स्रोत
2010-03-22 03:09:58
क्योंकि एक फ्लैटन ट्यूपल कम उपयोगी है? – kennytm
"flatten" से आपका मतलब अनलिमिटेड है? यदि हां, तो क्यों? यह मेरे लिए स्पष्ट प्रतीत नहीं होता है, और अनलिमिटेड ट्यूपल में औपचारिक बीजगणितीय गुण बेहतर होते हैं। –
मैं इसके बजाय '(ए, (बी, (सी,())) के लिए वाक्य रचनात्मक चीनी होना चाहता हूं)' एचएलिस्ट – yairchu