Acumular

Acumular

Fácil

Instruções

Implementa a operação accumulate, que, dada uma coleção e uma operação a aplicar a cada elemento dessa coleção, devolve uma nova coleção com o resultado da aplicação dessa operação a cada elemento da coleção de entrada.

Dada a coleção de números:

  • 1, 2, 3, 4, 5

E a operação:

  • elevar um número ao quadrado (x => x * x)

O teu código deve ser capaz de produzir a coleção dos quadrados:

  • 1, 4, 9, 16, 25

Dá uma vista de olhos à suite de testes para veres a assinatura esperada da função.

Restrições

Não mexas na funcionalidade collect/map/fmap, ou lá como lhe chamam, que a tua biblioteca padrão oferece! Resolve este exercício sozinho, recorrendo a outras ferramentas básicas.

Dicas

Neste exercício, dá-te jeito conheceres a seguinte funcionalidade do F#:

  • Recursão de cauda Evita o esgotamento da pilha com entradas grandes, recorrendo à recursão de cauda. Embora não haja casos de teste que verifiquem isto explicitamente, usar recursão de cauda dá origem a uma solução mais eficiente. Outro bom recurso sobre recursão de cauda é este artigo de blog.
  • Inferência de tipos O compilador de F# consegue inferir os tipos automaticamente. Isso significa que, muitas vezes, não precisas de indicar tipos nenhuns. Para mais informações sobre como isto funciona e sobre as suas vantagens, consulta esta página.
Editar via GitHub A ligação abre numa nova janela ou separador
F# Exercism

Estás pronto para começar Acumular?

Inscreve-te no Exercism para aprenderes e dominares F# com 18 conceitos148 exercícios, e mentoria humana real, tudo grátis.