Gibt es einen Namen für diese Tupel-Erstellungssprache?

Auf derMailingliste erweitern, der folgende clevere Trick zum Erstellen einer Tupel-ähnlichen Entität wurde kürzlich von @LouisDionne gepostet:

#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    
}

Live-Beispiel.

Die Klugheit ist daslist ist ein Lambda, das eine Liste variabler Parameter als Eingabe verwendet und ein Lambda als Ausgabe zurückgibt, die ein anderes Lambda benötigt, um auf seine Eingabe zu reagieren. Ähnlich,length ist ein Lambda, das eine listeähnliche Entität annimmt, an die es die Variadik liefertsizeof... Operator auf die ursprünglichen Eingabeparameter der Liste. Dassizeof... Der Operator ist in ein Lambda gewickelt, damit es an den Operator übergeben werden kannlist.

Frage: Gibt es einen Namen für diese Tupel-Erstellungssprache? Vielleicht aus einer funktionalen Programmiersprache, in der Funktionen höherer Ordnung häufiger verwendet werden.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage