Объясните понятным языком, что такое лямбда выражения ** примере PascalABC.NET Даю 50...

0 голосов
50 просмотров

Объясните понятным языком, что такое лямбда выражения на примере PascalABC.NET
Даю 50 баллов


Информатика (4.2k баллов) | 50 просмотров
0

Он реально дал 50. 25+13=38. + 12 дают потом

0

Так вот какой здесь алгоритм раздачи слонов

0

а если два человека решили вопрос? как они распределяются?

Дан 1 ответ
0 голосов
Правильный ответ

Строго объяснять не вижу смысла, поскольку придется тратить время на разъяснение массы попутных вещей, начиная от λ-исчисления и Алонзо Чёрча. Если бы Вам было понятно одно из определений, вроде "Лямбда-выражение — это анонимная функция, с помощью которой можно создавать типы делегатов или деревьев выражений", Вы бы не стали писать сюда вопрос. Поэтому постараюсь рассказать "на пальцах" и примерах.

"Лямбды" - это функции (а также, выражения и процедуры), позволяющие эффектно в одном месте и объявить их, и использовать, причем, зачастую, даже не давая этим функциям имени (анонимные функции). Вот такие они "одноразовые".

Записывается лямбда обычно в форме t -> f(t) и читается "t переходит в f(t)".
Фактически, тут много общего с обычной функцией, имеющей формальный параметр t и определяющей в своем теле значение при помощи f(t). Конечно, параметр может быть и не один.

Изюминка "лямбд" в том, что они могут использоваться на правах простых переменных. Например, можно присвоить переменной "лямбду" и передать её, как параметр в программную единицу вместо функции, например
var f:real->real:=t->3*Sin(t)+Cos(t); Tab(f,0,10,0.1);

Лямбды очень активно присутствуют в операциях, пришедших в PascalABC.NET из LINQ .Net, в частности, в проецировании и фильтрации.
var n:=ArrGen(20,i->2*i+5).Where(t->Cos(t/6)<0).Count;<br>
Последние версии PascalABC.NET 3.3 имеют очень развитые средства для программирования в функциональном стиле, построенные на "лямбдах".
Примеры множественного использования лямбд можно найти в файлах, входящих в стандартную поставку, в также в Справочном руководстве по библиотеке численных методов, ставшей стандартной с версии 3.3.0.1552 от 20.10.2017 (файл \Program Files\PascalABC.NET\Doc\NumLibABC.pdf)

(150k баллов)
0

спасибо за подробное объяснение