यदि आप IntFunction
इसे देखते हैं तो यह स्पष्ट हो सकता है: IntFunction<R>
एक है FunctionalInterface
। यह एक फ़ंक्शन का प्रतिनिधित्व करता है जो एक लेता है int
और प्रकार का मान लौटाता है R
।
इस मामले में, वापसी प्रकार R
भी एक है FunctionalInterface
, अर्थात् IntUnaryOperator
। तो पहला (बाहरी) फ़ंक्शन स्वयं एक फ़ंक्शन देता है।
इस स्थिति में: जब एक पर लागू किया जाता है int
, curriedAdd
तो उस फ़ंक्शन को वापस करने के लिए माना जाता है जो फिर से एक लेता है int
(और फिर से लौटता है int
, क्योंकि यही वह IntUnaryOperator
करता है)।
फ़ंक्शनल प्रोग्रामिंग में, किसी फ़ंक्शन के प्रकार को लिखना सामान्य है param -> return_value
और आप यहां ठीक उसी तरह देखते हैं। तो का प्रकार curriedAdd
है int -> int -> int
(या int -> (int -> int)
यदि आप इसे बेहतर पसंद करते हैं)।
जावा 8 का लंबोदर सिंटैक्स इसके साथ जाता है। ऐसे फ़ंक्शन को परिभाषित करने के लिए, आप लिखते हैं
a -> b -> a + b
जो वास्तविक लैम्ब्डा कलन के समान है:
λa λb a + b
λb a + b
एक ऐसा कार्य है जो एकल पैरामीटर लेता है b
और एक मान (राशि) लौटाता है। λa λb a + b
एक ऐसा कार्य है जो एकल पैरामीटर को स्वीकार करता है a
और एकल पैरामीटर के दूसरे फ़ंक्शन को लौटाता है। पैरामीटर मान पर सेट के साथ λa λb a + b
रिटर्न ।λb a + b
a