เมื่อใช้ฟังก์ชันง่ายๆเช่น + มันไม่สำคัญว่าคุณจะใช้ฟังก์ชันใด
โดยทั่วไปความคิดreduce
คือการดำเนินการสะสม คุณแสดงค่าการสะสมปัจจุบันและค่าใหม่หนึ่งค่าให้กับฟังก์ชันการสะสมของคุณผลลัพธ์ของฟังก์ชันคือค่าสะสมสำหรับการทำซ้ำครั้งถัดไป ดังนั้นการทำซ้ำของคุณมีลักษณะดังนี้:
cum-val[i+1] = F( cum-val[i], input-val[i] ) ; please forgive the java-like syntax!
สำหรับการนำไปใช้แนวคิดก็คือคุณกำลังพยายามเรียกใช้ฟังก์ชันโดยคาดว่าจะมีอาร์กิวเมนต์สเกลาร์จำนวนหนึ่ง แต่ขณะนี้อยู่ในคอลเล็กชันและจำเป็นต้องดึงออก ดังนั้นแทนที่จะพูดว่า:
vals = [ val1 val2 val3 ]
(some-fn (vals 0) (vals 1) (vals 2))
เราสามารถพูดได้ว่า:
(apply some-fn vals)
และจะถูกแปลงให้เทียบเท่ากับ:
(some-fn val1 val2 val3)
ดังนั้นการใช้ "ใช้" จึงเหมือนกับการ "ลบวงเล็บ" รอบลำดับ
sum
ฟังก์ชันในตัวเช่นใน haskell? ดูเหมือนจะเป็นการดำเนินการทั่วไป