Строго объяснять не вижу смысла, поскольку придется тратить время на разъяснение массы попутных вещей, начиная от λ-исчисления и алонзо чёрча. если бы вам было понятно одно из определений, вроде " лямбда-выражение — это анонимная функция, с которой можно создавать типы делегатов или деревьев выражений", вы бы не стали писать сюда вопрос. поэтому постараюсь рассказать "на пальцах" и примерах. "лямбды" - это функции (а также, выражения и процедуры), позволяющие эффектно в одном месте и объявить их, и использовать, причем, зачастую, даже не давая этим функциям имени (анонимные функции). вот такие они "одноразовые". записывается лямбда обычно в форме 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; последние версии pascalabc.net 3.3 имеют развитые средства для программирования в функциональном стиле, построенные на "лямбдах". примеры множественного использования лямбд можно найти в файлах, входящих в стандартную поставку, в также в справочном руководстве по библиотеке численных методов, ставшей стандартной с версии 3.3.0.1552 от 20.10.2017 (файл \program files\pascalabc.net\doc\numlibabc.pdf)
olqa27
25.10.2021
//pascalabc.net 3.3,сборка 1611 от 06.01.2018 //внимание! если программа не работает, обновите версию! begin var mas: =arrrandomreal(10,-99,99); var c: =mas.select(t-> round(t*100) / 100).toarray; c.println; var b: =c.min; c[7]: =b; c.println; end. program m2 begin var n: =readinteger('введите количество n='); var (b,a,c): =(3,1,2); var k: real: =0; for var i: =1 to n do begin k: =k+b/(a*c); b: =b+3; a: =a+1; c: =c+2; end; writeln('сумма=',k); end. program m3; begin var n: =readinteger('введите количество n='); var c: real: =0; var b: =1; for var i: =1 to n do begin c: =c+b**2; b: =b+1; end; var y: =n*(n+1)*(2*n+1)/6; if c=y then writeln('тождество верно') else writeln('тождество не верно') end.
ответ:
всё показано схематично на фото