तो कुछ ऐसा
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
Post a Comment