Memoization lưu vào cache các kết quả của một hàm theo khóa là các đối số của nó, nên các lần gọi lặp lại với cùng đầu vào sẽ trả về kết quả đã cache ngay lập tức thay vì tính toán lại. Nó đánh đổi bộ nhớ lấy tốc độ và chỉ hoạt động với các hàm thuần (pure) (cùng đầu vào → cùng đầu ra, không có side effect).
Một wrapper memoize tổng quát
js
() {
cache = ();
{
key = .(args);
(cache.(key)) {
cache.(key);
}
result = (...args);
cache.(key, result);
result;
};
}
= n => { n * n; };
fastSquare = (slowSquare);
();
();
