Existe um nome para esse idioma de criação de tupla?
NoAumentar lista de discussão, o seguinte truque inteligente para criar uma entidade semelhante a tupla foi postado recentemente por @LouisDionne:
#include <iostream>
auto list = [](auto ...xs) {
return [=](auto access) { return access(xs...); };
};
auto length = [](auto xs) {
return xs([](auto ...z) { return sizeof...(z); });
};
int main()
{
std::cout << length(list(1, '2', "3")); // 3
}
A esperteza é quelist
é um lambda que recebe uma lista de parâmetros variados como entrada e retorna um lambda como uma saída que levará outro lambda para atuar em sua entrada. Similarmente,length
é uma lambda que assume uma entidade do tipo lista, à qual fornecerá a variávelsizeof...
operador aos parâmetros de entrada originais da lista. osizeof...
O operador é envolto em um lambda para que possa ser passado para olist
.
Pergunta, questão: existe um nome para esse idioma de criação de tupla? Talvez a partir de uma linguagem de programação funcional em que funções de ordem superior sejam mais usadas.