Memoization คือการแคชผลลัพธ์ของฟังก์ชันโดยใช้อาร์กิวเมนต์เป็น key ดังนั้นการเรียกซ้ำด้วย input เดิมจะคืนผลลัพธ์ที่แคชไว้ทันทีแทนที่จะคำนวณใหม่ มันเป็นการแลก หน่วยความจำเพื่อความเร็ว และใช้ได้เฉพาะกับฟังก์ชันแบบ pure เท่านั้น (input เดิม → output เดิม ไม่มี side effect)
ตัวห่อ (wrapper) memoize แบบทั่วไป
js
() {
cache = ();
{
key = .(args);
(cache.(key)) {
cache.(key);
}
result = (...args);
cache.(key, result);
result;
};
}
= n => { n * n; };
fastSquare = (slowSquare);
();
();
