Implemente as operações keep e discard em coleções.
Dada uma coleção e um predicado sobre os elementos dessa coleção, keep retorna uma nova coleção contendo os elementos para os quais o predicado é verdadeiro, enquanto discard retorna uma nova coleção contendo os elementos para os quais o predicado é falso.
Por exemplo, dada a coleção de números:
E o predicado:
Então a sua operação keep deve produzir:
Enquanto a sua operação discard deve produzir:
Repare que a união de keep e discard corresponde a todos os elementos.
As funções podem se chamar keep e discard, ou podem precisar de nomes diferentes para não entrar em conflito com funções ou conceitos já existentes na sua linguagem.
Não use aquela funcionalidade de filtro/rejeição/sei lá o quê que a sua biblioteca padrão oferece! Resolva por conta própria usando outras ferramentas básicas.
Este exercício exige que você chame uma função passada como argumento. No Uiua, você pode fazer isso com macros, que é como este exercício espera que você o resolva.
Você percebe imediatamente que uma associação é uma macro por causa do sufixo !.
Crie sua conta no Exercism para aprender e dominar Uiua com 100 exercícios e mentoria humana de verdade, tudo de graça.