Memo
Classe de utilidade de memoização genérica
Importação
_ <- fat.extra.Memo
Construtor
Nome | Assinatura | Descrição |
---|---|---|
Memo | (method: Method) | Cria uma instância Memo para um método |
Membros do Protótipo
Nome | Assinatura | Descrição |
---|---|---|
asMethod | (): Method | Retorna uma versão curried do Memo |
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)
}
memoInstance = Memo(fib)
quickFib = memoInstance.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