Desafio: Reunir e ordenar
Crie uma função gather que aceite um argumento do tipo string e retorne outra função.
As chamadas da função devem permitir o encadeamento contínuo até order ser chamado.
order deve aceitar um número como argumento e retornar outra função. As chamadas da função devem permitir o encadeamento contínuo até get ser chamado.
get deve retornar todos os argumentos fornecidos às funções gather como uma string, na ordem especificada nas funções order.
Exemplos
gather("a")("b")("c").order(0)(1)(2).get() ➞ "abc"
gather("a")("b")("c").order(2)(1)(0).get() ➞ "cba"
gather("e")("l")("o")("l")("!")("h").order(5)(0)(1)(3)(2)(4).get() ➞ "hello!"Observações
Espera-se que gather e order sejam encadeados qualquer número de vezes, mas sempre com o mesmo número de invocações para cada um (ou seja, ambas as funções sempre serão encadeadas o mesmo número de vezes).