Example memoize function

export function memoize<A extends unknown[], R>(fn: (...args: A) => R) {
  const cache = new Map<string, R>();
  return (...args: A): R => {
    let key: string;
    try {
      key = JSON.stringify(args, (_k, v) => (typeof v === "function" ? v.toString() : v));
    } catch {
      // Fallback: use toString if serialization fails
      key = args.map(String).join("|");
    }
    if (!cache.has(key)) {
      cache.set(key, fn(...args));
    }
    return cache.get(key)!;
  };
}