Ce que VOUS voulez de memoization peut-être pas la même chose que ce que le compilateur memoization option serait de fournir.
Vous savez peut-être que c'est seulement rentable pour memoize le dernier 10 ou si les valeurs distinctes calculé, parce que vous savez comment cette fonction sera utilisée.
Vous savez peut-être qu'il n'a de sens que pour memoize 2 ou 3 valeurs, parce que vous ne serez jamais utiliser des valeurs plus vieux que ça. (Fibonacci de la Séquence qui vient à l'esprit.)
Vous pouvez générer un grand nombre de valeurs sur certaines pistes, et seulement quelques-uns sur les autres.
Vous voudrez peut-être "jeter" certains memoized valeurs et de recommencer. (Je memoized un générateur de nombre aléatoire de cette manière, afin que je puisse rejouer la séquence de nombres aléatoires qui construit une certaine structure, tandis que certains autres paramètres de la structure a été modifiée.)
Memoization comme une optimisation dépend de la recherche de la memoized valeur étant beaucoup moins cher que le recalcul de la valeur. Cela dépend de la commande de l'entrée des demandes. Ceci a des implications pour la memoization base de données: faut-il utiliser une pile, un tableau de toutes les valeurs d'entrée possibles (qui peuvent être de très grande taille), un seau de hachage, ou un b-arbre?
Le memoizing compilateur doit fournir soit un "one size fits all" memoization, ou qu'il peut apporter beaucoup de solutions de rechange possibles, et des paramètres pour contrôler les solutions de rechange. À un certain point, il devient plus facile pour tout le monde à demander à l'utilisateur de fournir son propre memoization.