Реализовал на новом C++ (стандарт C++11) такое вот представление пар (для простоты это пары целых значений):
typedef std::function<int(std::function<int(int,int)>)> Pair; Pair make_pair(int a, int b) { return [=] (std::function<int(int,int)> f) { return f(a, b); }; } int get_first(Pair p) { return p( [] (int a, int b) { return a; } ); } int get_second(Pair p) { return p( [] (int a, int b) { return b; } ); }
Тривиально (канонически даже), но смешно довольно таки. Я думаю что людям, не знакомым с лямбда-исчислением, будет довольно прикольно разобраться в том, как это работает.
На Гитхаб что ли залить. Вдруг хедхантеры меня там найдут и 100500 денег предложат.