यदि आप 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 + ba