Сообщение Re[4]: lambda являются first class citizens? от 06.05.2018 10:33
Изменено 06.05.2018 10:36 kov_serg
Re[4]: lambda являются first class citizens?
Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, kov_serg, Вы писали:
_>>Если да то как массив например их 3 таких лямбд задать?
AG>А в чём проблема?
AG>
Проблема в том что для first class citizen такой проблемы не должно быть
В C++ стараются сделать костылями. Именно это печалит. Что указатели на члены класса что лямбды. А перегружаемые функции с лямбдами. А если вируальную функцию захочеться? В результате таких нововедений растёт только сложность и энтропия и вместо упрощения получаем новые проблемы.
Так что это не "first class citizen" это "crutch class citizen".
AG>Здравствуйте, kov_serg, Вы писали:
_>>Если да то как массив например их 3 таких лямбд задать?
AG>А в чём проблема?
AG>
AG>int main(void) {
AG> auto x = []{ std::cout <<"hi\n"; };
AG> decltype(x) y[] = {x, x, x};
AG> y[1]();
AG> return 0;
AG>}
AG>
Проблема в том что для first class citizen такой проблемы не должно быть
auto x=[]{ std::cout<<"x\n"; };
auto y=[]{ std::cout<<"y\n"; };
auto z=[]{ std::cout<<"z\n"; };
typedef decltype(x) t;
void foo(t); foo(x); foo(y); foo(z);
t a[]={x,y,z};
В C++ стараются сделать костылями. Именно это печалит. Что указатели на члены класса что лямбды. А перегружаемые функции с лямбдами. А если вируальную функцию захочеться? В результате таких нововедений растёт только сложность и энтропия и вместо упрощения получаем новые проблемы.
Так что это не "first class citizen" это "crutch class citizen".
Re[4]: lambda являются first class citizens?
Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, kov_serg, Вы писали:
_>>Если да то как массив например их 3 таких лямбд задать?
AG>А в чём проблема?
AG>
Проблема в том что для first class citizen такой проблемы не должно быть
В C++ стараются сделать костылями. Именно это печалит. Что указатели на члены класса что лямбды. А перегружаемые функции с лямбдами. А если вируальную функцию захочеться? В результате таких нововедений растёт только сложность и энтропия и вместо упрощения получаем новые проблемы.
Так что это не "first class citizen" это "crutch class outlander".
AG>Здравствуйте, kov_serg, Вы писали:
_>>Если да то как массив например их 3 таких лямбд задать?
AG>А в чём проблема?
AG>
AG>int main(void) {
AG> auto x = []{ std::cout <<"hi\n"; };
AG> decltype(x) y[] = {x, x, x};
AG> y[1]();
AG> return 0;
AG>}
AG>
Проблема в том что для first class citizen такой проблемы не должно быть
auto x=[]{ std::cout<<"x\n"; };
auto y=[]{ std::cout<<"y\n"; };
auto z=[]{ std::cout<<"z\n"; };
typedef decltype(x) t;
void foo(t); foo(x); foo(y); foo(z);
t a[]={x,y,z};
В C++ стараются сделать костылями. Именно это печалит. Что указатели на члены класса что лямбды. А перегружаемые функции с лямбдами. А если вируальную функцию захочеться? В результате таких нововедений растёт только сложность и энтропия и вместо упрощения получаем новые проблемы.
Так что это не "first class citizen" это "crutch class outlander".