LINUX.ORG.RU

сан, а теперь и оракл давно обещали лямбды в 8-й ветке. а лисп силён далеко не лямбдами

memnek
()

Так баян же. Уродский синтаксис замыканий в новой джяве тут ещё прошлой весной (емнип) обсуждали.

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

Там, где нужна однострочная одноразовая функция, очевидно же.

PayableOnDeath
()
Ответ на: комментарий от TERRANZ

Есть список, и он для каждого его элемента применяет «какую-то хрень» - просто проводит арифметические операции, а именно (2*x)^3. Для этого не будешь же именованную функцию заводить. То есть, как это уже сказали, это может быть одноразовая функция, которую, например, можно послать как аргумент другой функции.

different_thing
()

Лямбды есть почти во всех современных языках, даже вон в С++ впендюрили, при чём тут lisp?

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

> расшифруй для нелиспера пожалуйста

Пример возведения каждого элемента массива в квадрат, псевдокод: for_each_element(array; x λ x*x)

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

>ля этого не будешь же именованную функцию заводить
буду, обязательно.

которую, например, можно послать как аргумент другой функции.

не нужно, реализуется классом-оберткой.

И вообще лямбды в том виде в каком они предлагаются в джаве 8 - тупо синтаксический сахар.

JFreeM ★★★☆
()
Ответ на: комментарий от TERRANZ

Допустим функция должна возвратить функцию в качестве значения. Как это предполагается делать без лямбд?

ugoday ★★★★★
()

Лямбды у всех нормальных людей давно уже есть. Запилите мне tail call optimization, суки!

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

>лямбды

не нужно, реализуется классом-оберткой.


Какая убогая платформа.

Deleted
()
Ответ на: комментарий от TERRANZ

А можно пример реализации GetFuncFromThis? Например, такой что бы возвращала бы функцию складывающую два своих аргумента и аргумент GetFuncFromThis.

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

т.е. функциональный тип данных это уже сразу лямбда?

qnikst ★★★★★
()

мысли о 8 появились сразу же, как только стало ясно, что в 7 все наработки не попадают

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

два своих аргумента и аргумент GetFuncFromThis

вот это не знаю, чесно


type
  TMyFunc = function(a,b:byte):integer;

function func1(a,b:byte):integer;
begin
  result:=a+b;
end;
function func2(a,b:byte):integer;
begin
  result:=a*b;
end;

function GetFunc(t:byte):TMyFunc;
begin
//не помню как в поцкале кейсы сделаны, но примерно вот так
case t of
  1:result:=@func1;
  2:result:=@func2;
end;
...
var f1,f2:TMyFunc;
begin
  @f1:=GetFunc(1);
  @f2:=GetFunc(2);
  writeln(f1(2,2));
  writeln(f2(2,2));
end;

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

вот это не знаю, чесно

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

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

напомн, что есть лямбда функция?

лямбда функция - это масло маслянное

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

Например, передавать небольшие callback-и для асинхронных вызовов.

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

ок. только я даже представить не могу, где это может пригодиться...

Анонимные классы, определяемые «по месту» и имеющие доступ к членам включающего класса, тебе неизвестны? Так вот, это и есть лямбда с замыканием.

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