Jika Anda melihat IntFunctionmungkin menjadi lebih jelas: IntFunction<R>adalah a FunctionalInterface. Ini mewakili fungsi yang mengambil intdan mengembalikan nilai tipe R.
Dalam hal ini, tipe kembaliannya Rjuga a FunctionalInterface, yaitu IntUnaryOperator. Jadi yang pertama (luar) itu sendiri mengembalikan fungsi.
Dalam hal ini: Ketika diterapkan ke int, curriedAdddiharapkan untuk mengembalikan fungsi yang lagi mengambil int(dan kembali lagi int, karena itulah IntUnaryOperator).
Dalam pemrograman fungsional, adalah umum untuk menulis jenis fungsi sebagai param -> return_valuedan Anda melihatnya persis di sini. Jadi jenisnya curriedAddadalah int -> int -> int(atau int -> (int -> int)jika Anda menyukainya lebih baik).
Sintaks lambda Java 8 sejalan dengan ini. Untuk mendefinisikan fungsi seperti itu, Anda menulis
a -> b -> a + b
yang sangat mirip dengan kalkulus lambda sebenarnya:
λa λb a + b
λb a + badalah fungsi yang mengambil satu parameter bdan mengembalikan nilai (jumlah). λa λb a + badalah fungsi yang menerima satu parameter adan mengembalikan fungsi lain dari satu parameter. λa λb a + bkembali λb a + bdengan aset ke nilai parameter.