मैं हास्केल में नौसिखिया हूं और आशा करता हूं कि यह सवाल मूर्ख नहीं है।क्या "सूची" विशेष रूप से हास्केल के पैटर्न मिलान में संभाली गई है?
मैं इतना उदाहरण देखा है कि जब मैं एक सूची हो रहा है, मैं व्यक्तिगत चर करने के लिए सूची का बाँध "रचना तत्व" से मेल खाते हैं और करने में सक्षम हूँ:
listSizeDesc :: [a] -> String
listSizeDesc [] = "Emtpy"
listSizeDesc (x:xs) = "Something inside"
हालांकि, मैं कुछ करने की कोशिश जैसे:
foo :: Int -> String
foo 0 = "Zero"
foo (n - 1) = "next number is " ++ show n
यह काम नहीं करता है।
ऐसा लगता है कि दोनों (एन -1) और (x: xs) वर्णन करते हैं कि तर्क "बनाया गया" है और तर्क के लिए "घटक" को बांधता है। जिस तरह से सूची विशेष रूप से रिकर्सन की आसानी के लिए डिज़ाइन की गई है? Coz ऐसा लगता है कि यह मिलान/तर्क-बाध्यकारी तर्क अन्य कार्यों पर लागू नहीं होता है (:)।
निश्चित रूप से एक बेवकूफ सवाल नहीं है। यह एक साथी नौसिखिया के रूप में मेरी समझ है: सूचियां "विशेष" नहीं हैं। पैटर्न मिलान के साथ काम करता है: क्योंकि: सूचियों के लिए एक प्रकार का कन्स्ट्रक्टर है। यह प्रकार के रचनाकारों का काम करता है लेकिन सामान्य कार्यों के लिए नहीं। यह काम कितना अच्छी तरह से समझाया गया है [यहां विकीबुक्स पर] (http://en.wikibooks.org/wiki/Haskell/Pattern_matching) –
जब तक यह अच्छी तरह से पूछा जाता है, तब तक मूर्खतापूर्ण प्रश्न जैसी कोई चीज़ नहीं होती है। – hugomg
संक्षिप्त उत्तर: संख्या –