Implemente operações básicas com listas.
Em linguagens funcionais, operações com listas como length, map e reduce são muito comuns.
Implemente uma série de operações básicas com listas, sem usar funções já existentes.
O número e os nomes exatos das operações a serem implementadas vão depender da trilha, para evitar conflitos com nomes já existentes, mas as operações gerais que você vai implementar incluem:
append (dadas duas listas, adicione todos os itens da segunda lista ao final da primeira lista);concatenate (dada uma série de listas, combine todos os itens de todas as listas em uma única lista achatada);filter (dados um predicado e uma lista, retorne a lista de todos os itens para os quais predicate(item) é True);length (dada uma lista, retorne o número total de itens dentro dela);map (dadas uma função e uma lista, retorne a lista dos resultados de aplicar function(item) a todos os itens);foldl (dados uma função, uma lista e um acumulador inicial, faça o fold (reduza) de cada item no acumulador, a partir da esquerda);foldr (dados uma função, uma lista e um acumulador inicial, faça o fold (reduza) de cada item no acumulador, a partir da direita);reverse (dada uma lista, retorne uma lista com todos os itens originais, mas em ordem inversa).Observe que a ordem em que os argumentos são passados para as funções de fold (foldl, foldr) faz diferença.
A descrição acima deste exercício é compartilhada entre todas as trilhas do Exercism.
Para ficar consistente com a biblioteca padrão do Elixir, as funções usadas por foldl e foldr devem receber o item como primeiro argumento e o acumulador como segundo.
Além disso, para não entrar em conflito com a função Kernel.length/1, que é importada automaticamente, a função que conta o comprimento será chamada de count.
Um ou mais testes deste exercício foram marcados com a tag :slow, porque podem demorar bastante para terminar. Por esse motivo, eles não serão executados na plataforma pelo executor de testes automatizado. Se você estiver resolvendo este exercício diretamente na plataforma, no editor web, talvez valha a pena baixar este exercício para a sua máquina. Assim, você poderá rodar todos os testes e verificar a eficiência da sua solução.
Crie sua conta no Exercism para aprender e dominar Elixir com 58 conceitos168 exercícios e mentoria humana de verdade, tudo de graça.
Aproveite uma introdução prática à recursão, explore as alternativas imperativas e funcionais para Operações com Listas e mergulhe a fundo na recursão de cauda e nas funções acumuladoras.