LINUX.ORG.RU
ФорумTalks

Ну всё! Уж теперь то лиспу точно копец!


0

0

Комитет С++ планирует добавить в следующую версию стандарта С++ поддержку lambda-функций и замыканий.

Примеры lambda-функций:

for_each( w.begin(), w.end(),
                []( const Widget& w ) { cout << w << " "; } );

int minWeight = 100;
find_if( w.begin(), w.end(),
             []( const Widget& w ) -> bool { w.Weight() > minWeight; } );

Замыкания там, конечно, безобразные. Если, например, захватить ссылки
на локальные переменные, то, как несложно догадаться, 
the effect
of invoking a closure object, or a copy, after the innermost block scope of the context of the lambda expression has
been exited is undefined.
Почему это назвали замыканием а не обычной вложенной функцией, мне
не совсем понятно, может кто объяснит?
В таком «замыкании» достаточно сохранить указатель на фрейм
статически предыдущей функции.
Это, кстати, то, что делает delegate в D 1.0, в D 2.0 замыкания куда честнее.

Ссылка на блог Herb Sutter-а, С++ эксперта, члена комитета стандарта ISO С++,
работающего архитектором программного обеспечения в Microsoft:
http://herbsutter.spaces.live.com/

Ссылка на описание:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf
★★★★★

Нет, теперь-то с++ добьют контрольным выстрелом в голову

anonymous
()

>> for_each( w.begin(), w.end(), []( const Widget& w ) { cout << w << " "; } );

код с кутэшным макросом foreach красивее выглядит :)

Adjkru ★★★★★
()
Ответ на: комментарий от tailgunner

Ну да, саттер недавно написал :(

Legioner ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Вернее про лямбду слухи ходили, а про замыкания не слышал, только обрадовался, да не тут то было. С++ меня опять обломал :( И D разочаровывает. Нет в жизни счастья, уйду на скалу :)

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

C-подобный синтаксис + нормальные замыкания называется ECMAScript.

anonymous
()
Ответ на: комментарий от Legioner

Только раньше для объявления использовались <> вместо [], IIRC.

tailgunner ★★★★★
()
Ответ на: комментарий от vahvarh

>новый раздел - маргинальное программирование...

А что маргинальнее, ООЯП или ФЯП?

redgremlin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.