लगभग सही:
prop_leftInverse ((x, y):rest) = undefined
सबसे पहले , आपको पूरे पैटर्न के चारों ओर कोष्ठक की आवश्यकता है। दूसरा, सूची में पहला तत्व एक ट्यूपल है, लेकिन शेष सूची सिर्फ टुपल्स की एक सूची है, सूचियों की एक झुकाव नहीं।
आप एक सामान्य सूची
head :: [a] -> a
head [] = error "Empty list"
head (x:xs) = x
पर सरल पैटर्न मिलान को देखें, तो इस प्रकार का a
के सभी मानों, या सभी प्रकार के काम करता है। आप एक विशिष्ट प्रकार चाहते हैं, इस तरह के Int
के रूप में, आप
headIsOne :: [Int] -> Bool
headIsOne (1:xs) = True
headIsOne _ = False -- Here the _ matches anything
तो कर सकता है, तो आप एक टपल मिलान करना चाहते हैं:
addTup :: (Int, Int) -> Int
addTup (x, y) = x + y
हम देखते हैं कि पैटर्न एक टपल मैच के लिए वास्तव में कितनी है हम कोड में एक लिखते हैं, इसलिए सूची की शुरुआत में एक से मिलान करने के लिए, हमें केवल एक विशिष्ट पैटर्न के साथ पहले तत्व से मिलान करना होगा।
prop_leftInverse ((x, y):rest) = undefined
सूची के बाकी rest
को सौंप दिया जाता है (हालांकि आप इसे कॉल कर सकते हैं जो कुछ भी आप चाहते हैं)।
एक और उदाहरण
आप पहले दो tuples हड़पने के लिए चाहता था, तो:
myFunc ((x, y):(v, u):rest) = undefined
या पहले तीन:
myFunc ((x1, y1):(x2, y2):(x3, y3):rest) = undefined
अब तक मुझे आशा है कि आप कर सकते हैं पैटर्न देखें (इसे प्राप्त करें?)
यह बहुत विस्तृत था, धन्यवाद! –