2013-06-17 9 views
5

undefined हैस्केल में आंशिक सूची है?हास्केल में आंशिक सूची को परिभाषित किया गया है?

मुझे पता है कि [1,2:undefined] आंशिक है लेकिन लगभग undefined अकेले क्या है?

+1

मुझे "आंशिक सूची" की औपचारिक आधिकारिक परिभाषा के बारे में पता नहीं है, लेकिन आमतौर पर, 'अपरिभाषित', जब किसी सूची प्रकार में उपयोग किया जाता है, को माना जाता है आंशिक सूची। –

+2

क्या आप कृपया परिभाषित कर सकते हैं कि _a आंशिक list_ द्वारा आपका क्या मतलब है? –

उत्तर

1

मुझे कार्यात्मक प्रोग्रामिंग के परिचय में मेरे प्रश्न का उत्तर मिला है। | उर्फ ​​अपरिभाषित एक आंशिक सूची है (उनके लिए प्रेरण का आधार)

11

undefined एक ऐसा फ़ंक्शन है जो त्रुटि का कारण बनता है यदि आप इसका मूल्यांकन करने का प्रयास करते हैं। (हालांकि, अगर आप यह मूल्यांकन करने के लिए कोशिश मत करो, यह कोई नुकसान नहीं करता है।) के undefined के लिए प्रकार हस्ताक्षर जांच:

ghci> :t undefined 
undefined :: a 

कि a एक प्रकार चर रहा है, और के बाद से वहाँ कोई कमी में पहचान कर रहे हैं प्रकार हस्ताक्षर (टाइप बाधा :: और => प्रतीकों के बीच दिखाई देती है), a प्रकार का हो सकता है।

मुझे यकीन नहीं है कि आप वास्तव में : अपने उदाहरण में चाहते हैं।

[1,2,undefined] पूर्णांक की एक सूची है, इसलिए इस अभिव्यक्ति में undefined का प्रकार भी एक पूर्णांक है।

(1:2:undefined) पूर्णांक की एक सूची भी है, लेकिन : अपनी दूसरी तर्क के रूप में एक सूची लेता है, इसलिए इस अभिव्यक्ति में undefined का प्रकार पूर्णांक की एक सूची है।

मुझे नहीं लगता कि [1,2:undefined] समझ में आता है। 1 एक पूर्णांक है, लेकिन 2:undefined एक सूची पूर्णांक का है। आपके पास विभिन्न प्रकार के तत्वों के साथ एक सूची नहीं हो सकती है।


संपादित करें:

undefined, एक आंशिक सूची * नहीं वास्तव में है कि यह सिर्फ एक एकल मान (जो, किसी भी प्रकार की हो सकती है एक सूची सहित) है। उदाहरण के लिए, [1,2,undefined] तीन तत्वों वाली एक सूची है। पहला तत्व 1 है, दूसरा तत्व 2 है, और तीसरे तत्व का मूल्यांकन नहीं किया जा सकता है - लेकिन यह एक पूर्णांक है।

* हालांकि, अंतिम तत्व के रूप में undefined के साथ एक सूची का उपयोग कुछ प्रकार की "आंशिक सूची" का प्रतिनिधित्व करने के लिए किया जा सकता है, जैसा कि आप उस तत्व का मूल्यांकन नहीं कर सकते हैं। (मुझे लगता है कि @ डैनियल का मतलब है)। हालांकि, अगर से पहले तत्व हैं या के बाद, तो आप उनका मूल्यांकन कर सकते हैं।

ghci> last [1,2,undefined,4] 
4 

संपादित करें # 2: उदाहरण के लिए:

एक अन्य उदाहरण है मदद कर सकता है। यहां मैंने चार तत्वों के साथ एक सूची बनाई है, जिनमें से एक (c) undefined है। जब मैं c के प्रकार को खोजने के लिए ghci से पूछता हूं, तो मुझे लगता है कि यह केवल एक पूर्णांक है, सूची नहीं।

ghci> let (a:b:c:d) = [1,2,undefined,4] 
ghci> :type c 
c :: Integer 
+0

हाँ लेकिन अपरिभाषित है प्रत्येक प्रकार का एक हैकेल में मैं पूछ रहा हूं कि एक सूची आंशिक सूची को परिभाषित नहीं है। – user2184057

+0

ऊपर मेरा संपादन देखें। – mhwombat

+1

'1: 2: अपरिभाषित 'पर, अपरिभाषित प्रकार' इंटीजर 'नहीं है लेकिन' 1 इंटीजर]' ':: इंटेगर' पर विचार कर रहा है। – Satvik

2

आपका प्रश्न स्पष्ट नहीं है क्योंकि टिप्पणियों की ओर इशारा किया गया है लेकिन चलिए कुछ धारणाएं करते हैं। सबसे पहले आप आंशिक सूची के उदाहरण के रूप में 1:2:undefined लिखना चाहते थे।

> let p1 = 1:2:undefined 
> :t p1 
p1 :: [Integer] 

तो पी 1 में दो तत्व हैं और शेष अनिर्धारित है जो इसे किसी अर्थ में आंशिक सूची बनाता है। इस परिभाषा के बाद इस प्रकार के चेक:

> let p2 = undefined :: [Int] 
> :t p2 
p2 :: [Int] 

इसमें 0 तत्व हैं और शेष अनिर्धारित है। हम इसे एक खाली आंशिक सूची कह सकते हैं।

इसके बारे में सोचने का एक और तरीका यह है कि p1[1,2] ++ undefined और p2[] ++ undefined जैसा ही है।

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