2011-02-14 9 views
24

मुझे आश्चर्य है कि क्यों हास्केल में एक तत्व ट्यूबल नहीं है। क्या यह सिर्फ इसलिए है क्योंकि किसी को अब तक इसकी आवश्यकता नहीं है, या किसी भी तर्कसंगत कारण हैं? मैं असली दुनिया हास्केल की वेबसाइट http://book.realworldhaskell.org/read/types-and-functions.html#funcstypes.composite पर एक टिप्पणी में एक दिलचस्प धागा मिल गया, और लोगों की तरह विभिन्न कारणों से अनुमान लगाया:क्यों हास्केल में एक तत्व ट्यूबल नहीं है?

  • कोई अच्छा वाक्य रचना चीनी।
  • यह बेकार है।
  • आप सोच सकते हैं कि एक सामान्य मान (1) वास्तव में एक तत्व ट्यूपल है।

लेकिन किसी को भी एक अनुमान को छोड़कर कारण पता है?

+10

उन तीन बिंदुओं की आवाज बहुत आकर्षक है। – delnan

+7

आप बस पूछ सकते हैं, गणित में कोई भी तत्व टुपल क्यों नहीं है? – luqui

+1

@luqui वहाँ है, और यह सिंगलटन कहा जाता है - https://en.wikipedia.org/wiki/Tuple –

उत्तर

7

सटीक कारण है क्योंकि यह पूरी तरह से अनावश्यक है है। यदि आपके पास इसका मूल्य हो तो आपको एक-टुपल की आवश्यकता क्यों होगी?

वाक्य रचना भी एक सा भद्दा हो जाता है। अजगर में, आप एक tuples है सकते हैं, लेकिन आप एक अनुगामी अल्पविराम जरूरत है एक parenthesized अभिव्यक्ति से अलग करने के:

onetuple = (3,) 
सभी में

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

मैं अगर आप स्पष्ट परे कुछ कारणों के लिए देख रहे थे पता नहीं है, लेकिन इस मामले में स्पष्ट जवाब सही एक है।

+4

ध्यान दें कि एक-टुपल के पास बोतलों के संबंध में एक अलग व्यवहार होगा: जैसे '(⊥, ⊥) :: (ए, बी)' '⊥ :: (ए, बी) 'के समान नहीं है, इसलिए' वन ट्यूपल ⊥ :: वन टुपल ए '' ⊥ :: वनटूले ए' से अलग होगा। मैं कल्पना नहीं कर सकता कि वे उपयोगी हैं, आपको याद रखें, लेकिन यह ध्यान देने योग्य है। (और पायथन का वाक्यविन्यास उपयोगी '-XTupleSctions' के साथ संघर्ष करेगा।) –

+1

धन्यवाद, मैं मानता हूं कि यह बेकार है, लेकिन तथ्य यह है कि पाइथन के पास एक ही टुपल सुझाव देगा कि यह इतना स्पष्ट डिज़ाइन निर्णय नहीं है। और मैंने सोचा कि क्या इस मामले के लिए कोई चर्चा हुई थी। –

+0

@ टाकाशी का कारण है कि पाइथन का एक-टुपल क्यों है क्योंकि पार्सर इसे स्वीकार करेगा। –

32

इसके लिए एक lib है!

http://hackage.haskell.org/packages/archive/OneTuple/0.2.1/doc/html/Data-Tuple-OneTuple.html

असल में, हम एक OneTuple हम सब समय का उपयोग कर सकते है। यह पहचान कहा जाता है, और अब नई MTL में मानक शुद्ध monads के आधार के रूप में प्रयोग किया जाता है:

http://hackage.haskell.org/packages/archive/transformers/0.2.2.0/doc/html/Data-Functor-Identity.html

और यह एक महत्वपूर्ण उपयोग है! तरह * -> * का एक प्रकार निर्माता उपलब्ध कराने के आधार पर, यह (एक trival एक, दी गई, हालांकि सबसे तुच्छ नहीं) एक उदाहरण बनाया जा सकता है इकाई, functor, आदि, हमें ट्रांसफार्मर के लिए एक आधार के रूप में उपयोग करने देता है, जिनमें से ढेर।

+12

वाह! सब कुछ मैं कल्पना कर सकता हूँ असली है ... –

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