หากดูIntFunction
แล้วอาจจะชัดเจนขึ้น: IntFunction<R>
คือFunctionalInterface
. แสดงถึงฟังก์ชันที่ใช้int
และส่งกลับค่าของชนิดR
และส่งกลับค่าของชนิด
ในกรณีนี้ประเภทการส่งคืนR
ยังเป็น a FunctionalInterface
กล่าวคือIntUnaryOperator
. อย่างแรกฟังก์ชัน (ภายนอก) จะส่งคืนฟังก์ชัน
ในกรณีนี้: เมื่อนำไปใช้กับint
, curriedAdd
ควรจะกลับมาอีกครั้งที่ฟังก์ชั่นใช้เวลาอีกด้วยint
(และผลตอบแทนอีกครั้งint
เนื่องจากว่าสิ่งที่IntUnaryOperator
ไม่)
ในการเขียนโปรแกรมเชิงฟังก์ชันเป็นเรื่องปกติที่จะเขียนประเภทของฟังก์ชันเป็นparam -> return_value
และคุณจะเห็นว่าที่นี่ ประเภทของcurriedAdd
คือint -> int -> int
(หรือint -> (int -> int)
ถ้าคุณชอบแบบนั้นดีกว่า)
ไวยากรณ์แลมด้าของ Java 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
ตั้งค่าเป็นค่าพารามิเตอร์