Eğer bakarsanız IntFunction
daha net hale gelebilir: IntFunction<R>
is a FunctionalInterface
. Bir alan int
ve bir tür değeri döndüren bir işlevi temsil eder R
.
Bu durumda, dönüş türü R
de a FunctionalInterface
, yani bir IntUnaryOperator
. Dolayısıyla, birinci (dış) işlevin kendisi bir işlev döndürür.
Bu durumda: Bir uygulandığında int
, curriedAdd
yine bir götüren bir işlev döndürecek gerekiyordu int
(tekrar döner int
o en neyi çünkü IntUnaryOperator
yapar).
Fonksiyonel programlamada bir fonksiyonun tipini olarak yazmak yaygındır param -> return_value
ve burada tam olarak bunu görürsünüz. Tipi Yani curriedAdd
olduğunu int -> int -> int
(ya da int -> (int -> int)
daha iyi gibi ise).
Java 8'in lambda sözdizimi bununla birlikte gider. Böyle bir işlevi tanımlamak için yazarsınız
a -> b -> a + b
gerçek lambda hesabına çok benzer:
λa λb a + b
λb a + b
tek bir parametre alan b
ve bir değer (toplam) döndüren bir işlevdir . λa λb a + b
tek bir parametreyi kabul eden a
ve tek bir parametrenin başka bir fonksiyonunu döndüren bir fonksiyondur. λa λb a + b
döner λb a + b
ile a
parametre değerine set.