Haskell - Currying? Need further explanation -


तो कुछ ऐसा

  addList :: [int] - & gt; Int addList = foldl1 (+)  

यह काम क्यों करता है? क्रीम का हिस्सा क्यों कोई चर?

यदि आप fxy = bla की तरह एक फ़ंक्शन परिभाषित करते हैं, यह वैसे ही है जैसे fx = \ y - & gt; Bla , जो कि f = \ x - & gt; (\ Y - & gt; bla) । दूसरे शब्दों में f एक फ़ंक्शन होता है जो एक तर्क, x लेता है, और एक फ़ंक्शन देता है जो एक तर्क, y लेता है, और फिर वापस देता है वास्तविक परिणाम। इसे क्यूरिंग के रूप में जाना जाता है।

जब आप f x y करते हैं, तो यह समान होता है, यह (f x) y जैसा होता है। अर्थात। आप फ़ंक्शन f को तर्क के साथ कॉल कर रहे हैं x यह एक अन्य कार्य देता है, जिसका आप तर्क y पर लागू होते हैं।

इसलिए जब आप addList xs = foldl1 (+) xs करते हैं, आप पहली बार foldl1 (+) को कॉल कर रहे हैं, जो फिर एक और फ़ंक्शन देता है, जिसे आप xs पर लागू करते हैं इसलिए जब foldl1 (+) द्वारा फ़ंक्शन वापस आ गया है, तो वास्तव में वही है जो addList के रूप में है, आप इसे केवल addList = foldl1 (+) में छोटा कर सकते हैं >।


Comments