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
2010-03-03
mida de Operadores de Directorios
  • Los módulos File::Basename y File::Spec
  • Acceso Mediante glob
  • Lectura desde Globs
  • Lectura de Directorios en Contexto de Lista
  • Contexto Booleano: Bucles con Lecturas de Directorios
  • Operaciones con ficheros, links y directorios
  • Renombrar Ficheros
  • Práctica: Descenso Recursivo en Subdirectorios

    Lenguajes y Herramientas de Programacion 2011-02-02