zipWith
के प्रकार है:
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
और id
के प्रकार है:
id :: d -> d
तो अगर हम अब zipWith id
के प्रकार के प्राप्त करने के लिए चाहते हैं, हम में id :: d -> d
के प्रकार धक्का zipWith
के पहले तर्क का प्रकार:
d -> d
~ a -> (b -> c)
तो इसका मतलब है कि: a ~ d
और a ~ b -> c
। तो इसका मतलब है कि कि zipWith id
के प्रकार है:
zipWith id :: [a] -> [b] -> [c]
-> zipWith id :: [b -> c] -> [b] -> [c]
कैसे यह काम: पहली सूची तत्वों x :: b
की एक सूची कार्यों f :: b -> c
की एक सूची है, और दूसरी सूची, को रोकने के लिए है, और यह इस प्रकार गणना तत्वों की एक सूची f x :: c
।
उदाहरण के लिए:
Prelude> zipWith id [(+1),(5/),(3*),(3-)] [1,4,2,5]
[2.0,1.25,6.0,-2.0]
1+1
के बाद से 2.0
है, 5/4
1.25
है, 3*2
6.0
है और 3-5
-2.0
है।
तो zipWith id
दो तत्वों f
और x
अधिक वर्बोज़ (id f) x
ले जाएगा, और इन पर id f x
लागू होते हैं, या। चूंकि id f
f
है, इसलिए यह f x
की गणना करेगा।
हम इस प्रकार निष्कर्ष निकाल सकते हैं कि zipWith
तत्ववार मैपिंग है।
स्रोत
2017-08-04 14:33:15
ध्यान देने योग्य बात है कि इस और अधिक सामान्यतः लिखा है 'zipWith ($ लायक) के रूप में'। जो बिल्कुल वही काम करता है; '$' ऑपरेटर बस 'आईडी' का एक प्रकार संकुचित संस्करण है। – leftaroundabout
यदि आपने "विश्लेषण करने का प्रयास किया है", तो आपको अपने प्रयास किए गए विश्लेषण का विवरण शामिल करना चाहिए, या संभावित उत्तरदाताओं को केवल यह समझना होगा कि आप जो समझते हैं, और जो आप नहीं करते हैं उसे पूरी तरह याद कर रहे हैं। – user2407038