Memo

Utilitário de memoização genérica (também pode criar valores preguiçosos)

Importação

_ <- fat.extra.Memo

Construtor

Nome Assinatura Breve descrição
Memo (method: Method) Cria uma instância Memo para um método

a aridade do método memoizado pode ser 1 ou então 0 (para valores preguiçosos, implementados como Procedure)

Membros do protótipo

Nome Assinatura Breve descrição
asMethod (): Method Retorna uma versão memoizada do método original
call (arg: Any): Any Chamada memoizada; armazena e retorna resultado

Exemplo

Memo é útil para otimizar funções, armazenando os resultados. Ela armazena o resultado das chamadas de função e retorna o resultado armazenado quando as mesmas entradas ocorrem novamente.

_ <- fat.extra.Memo

fib = (n: Number) -> {
  n <= 2 => 1
  _      => quickFib(n - 1) + quickFib(n - 2)
}

quickFib = Memo(fib).asMethod

quickFib(50)  # 12586269025

Agora você pode chamar quickFib como se estivesse chamando fib, mas com resultados armazenados em cache para entradas computadas anteriormente.

aviso: pode causar acúmulo na alocação de memória

results matching ""

    No results matching ""