Instruções

Fábrica de acumuladores

Um problema proposto por Paul Graham é o de criar uma função que recebe um único argumento (numérico) e que retorna outra função que é um acumulador. A função de acumulador retornada, por sua vez, também recebe um único argumento numérico e retorna a soma de todos os valores numéricos passados até aquele momento para esse acumulador (incluindo o valor inicial passado quando o acumulador foi criado).

O que fazer:

Crie uma função que receba um número $n$ e gere funções acumuladoras que retornam a soma de cada número já passado para elas. Regras: Não use variáveis globais. Dica: Closures salvam o estado externo.

Critérios de Aceitação:

Testes:

  • `accumulator` deve ser uma função.
  • `accumulator(0)` deve retornar uma função.
  • `accumulator(0)(2)` deve retornar um número.
  • Ao passar os valores 3, -4, 1.5 e 5, o valor retornado deve ser 5.5.

Console