sub memoize {
my $func = shift;
my %cache;
my $stub = sub {
my $key = join ',', @_;
$cache{$key} = $func->(@_) unless exists $cache{$key};
return $cache{$key};
}
return $stub;
}
En las
secciones
4.15.9
y
4.15.10
vimos como usando typeglobs selectivos podemos instalar
en la tabla de símbolos un wrapper
de una función dada. Nótese que la funcionalidad del módulo Memoize
cae dentro de la categoría del wrapping.
Utilice la misma técnica
para sustituir una función por su
memoizada.
Casiano Rodríguez León
