ตามความเข้าใจของฉันฟังก์ชั่นบางส่วนเป็นฟังก์ชั่นที่เราได้รับโดยส่งพารามิเตอร์น้อยลงไปยังฟังก์ชั่นมากกว่าที่คาด ตัวอย่างเช่นถ้าสิ่งนี้ถูกต้องใน Python โดยตรง:
>>> def add(x,y):
... return x+y
...
>>> new_function = add(1)
>>> new_function(2)
3
ในตัวอย่างด้านบนnew_function
เป็นฟังก์ชันบางส่วน อย่างไรก็ตามตามHaskell Wikiความหมายของฟังก์ชั่นบางส่วนคือ
ฟังก์ชั่นบางส่วนเป็นฟังก์ชั่นที่ไม่ได้กำหนดไว้สำหรับข้อโต้แย้งที่เป็นไปได้ทั้งหมดของประเภทที่ระบุ
ดังนั้นคำถามของฉันคืออะไร "ฟังก์ชั่นบางส่วน" หมายถึงอะไร?
partial
ดำเนินการประยุกต์ใช้บางส่วนในขณะที่ Haskell ไม่ว่าโดยอัตโนมัติ รายการ wiki หมายถึงฟังก์ชั่นบางส่วนซึ่งเป็นคำจากคณิตศาสตร์
add 3 5
ไม่ใช่แอปพลิเคชันฟังก์ชันเดียว ครั้งแรกนี้ใช้add
กับ 3 เพื่อรับฟังก์ชั่นใหม่ซึ่งจะนำไปใช้กับ 5
partial
เมธอดคือการประกาศไปข้างหน้าของเมธอดไพรเวตที่ถูกนำไปใช้งานแบบเป็นทางเลือกที่อื่นในโค้ดเบสของโครงการ
new_function = functools.partial(add, 1)