มีกระบวนทัศน์สำหรับการเขียนฟังก์ชั่น“ การอัพเดทที่เพิ่มขึ้น” ในสไตล์ดาต้าโฟลที่แท้จริงหรือไม่?
ฉันไม่รู้คำศัพท์ที่ถูกต้องสำหรับการถามคำถามนี้ดังนั้นฉันจะอธิบายด้วยคำจำนวนมากแทนอดทนกับฉัน พื้นหลังดังนั้นเราจึงอยู่ในหน้าเดียวกัน: โปรแกรมมักจะมีแคช - การแลกเปลี่ยนเวลา / หน่วยความจำ ความผิดพลาดของโปรแกรมเมอร์ทั่วไปคือการลืมปรับปรุงค่าแคชหลังจากเปลี่ยนหนึ่งในแหล่งข้อมูลต้นกำเนิด / ทำนอง แต่กระบวนทัศน์การเขียนโปรแกรม dataflow หรือ FRP นั้นเป็นภูมิคุ้มกันต่อความผิดพลาดดังกล่าว หากเรามีฟังก์ชั่นบริสุทธิ์จำนวนมากและเชื่อมต่อเข้าด้วยกันในกราฟอ้างอิงโดยตรงจากนั้นโหนดสามารถมีค่าเอาต์พุตแคชและนำกลับมาใช้ใหม่ได้จนกว่าอินพุตใด ๆ ของฟังก์ชั่นจะเปลี่ยนไป สถาปัตยกรรมระบบนี้อธิบายไว้ในเอกสารการแคชในสภาพแวดล้อมที่ใช้ดาต้าโฟลว์และในภาษาที่จำเป็นต้องมีความคล้ายคลึงกับการบันทึกข้อมูลมากหรือน้อย ปัญหา : เมื่อหนึ่งในอินพุตของฟังก์ชั่นเปลี่ยนแปลงเรายังคงต้องใช้งานฟังก์ชั่นโดยรวมแล้วทิ้งเอาต์พุตแคชและคำนวณใหม่อีกครั้งตั้งแต่เริ่มต้น ในหลายกรณีดูเหมือนว่าจะสิ้นเปลืองสำหรับฉัน ลองพิจารณาตัวอย่างง่ายๆที่สร้างรายการ "5 อันดับแรก" ข้อมูลอินพุตเป็นรายการที่ไม่เรียงลำดับของอะไรก็ตาม มันถูกส่งผ่านเป็นอินพุตไปยังฟังก์ชันที่เอาต์พุตรายการที่เรียงลำดับ ซึ่งในทางกลับกันจะมีการป้อนฟังก์ชั่นที่ใช้ 5 รายการแรกเท่านั้น ใน pseudocode: input = [5, 20, 7, 2, 4, 9, 6, 13, 1, 45] intermediate = sort(input) final_output = …