Práctica: La Función memoize

El siguiente código muestra una forma de obtener un ''memoizador'' de propósito general:

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
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19