LINUX.ORG.RU

Для этого у них есть F# имхо

imp ★★
()

Смотрю на примеры кода и меня начинает тошнить... как всё-таки отвратительно всё это выглядит после lisp... надо признать - lisp развращает :))

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

Почему?

Чем это плохо? fib = (x) => x > 1 ? fib(x-1) + fib(x-2) : x;

Да еще просьба ко всем лиспокодерам:

Вы уж указывайте какой именно лисп имеете ввиду особенно когда говорите о простоте каких то контрукции.

На схеме вы кодите свои могучие задачи, на коммонлиспе или на емакслиспе?

Ато не всегда понятно.

Это все равно как говорить на "сях" Подразумевая С, С++, C# и Objective C вкупе.

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

> Чем это плохо? fib = (x) => x > 1 ? fib(x-1) + fib(x-2) : x;

Это ничем особо не плохо, однако не является достаточно полноценной лямбдой. Такие убогие лямбда-выражения есть и в Python. Ну и до кучи, приведенный отрывок работать не будет без небольшого костыля перед ним (см. статью).

> Вы уж указывайте какой именно лисп имеете ввиду

Любой. В любом лиспе полноценная лямбда, в которой может быть совершенно все что угодно.

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

Во всех трёх диалектах лиспа, которые ты перечислил, лямбды одинаково хороши, и выглядят одинаково.

Cy6erBr4in ★★★
()

Да, поганенько смотрится код, а от смеси лямбды с чисто-императивным понятием "застежек" вообще тошнит ;)

fmj
()

Злые регистраты со звёздочками обидели анонимуса ;)

он ведь думал, что прочитает наискосок под пивко 3 томика Кнута, скажет, что в его языке есть лямбды(использовать не будет) и всё... никакой компьютерный нерд не посмеет назвать его быдлокодером. А тут вон оно как, опять с небес на землю.

anonymous
()

mono ne nuzhen. C# ne nuzhen. period.

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

Да ладно. Я о лямбдах даже не заикнулся.

anonymous
()

просмотрел подиагонали. честно говоря, смысла не осилил - чем это отличается от создания отдельной функции и передачи указателя на нее? учитывая обязательную типизацию, очень похоже на костыль, как бы включить структурные элементы и шаблоны в ОО язык типа цешарпа.

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

> просмотрел подиагонали. честно говоря, смысла не осилил - чем это отличается от создания отдельной функции и передачи указателя на нее? учитывая обязательную типизацию, очень похоже на костыль, как бы включить структурные элементы и шаблоны в ОО язык типа цешарпа.

С новом стандарте C++ ито лучше реализована лямбда будет похоже ;) Там синтаксис нечто вроде:

std::transform(v.begin(), v.end(), v.begin(), <>(it)->(*it+2));

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

> std::transform(v.begin(), v.end(), v.begin(), <>(it)->(*it+2));

Хотя если верить википедии, и тут так-же нужно указывать сразу типы

fmj
()

А вот вариант подсчета обратной константы Фибоначчи, который по 
сравнению с C# кодом, и fk от 10000000 за время меньшее чем минута на 
2GHz целероне, в хагсе (т.е. интерпретируясь), считает ;)

fk = fkAcc 1.0 1.0 0.0
     where fkAcc v1 v2 r 0 = r
	   fkAcc v1 v2 r n = (((fkAcc $! v2) $! (v1+v2)) $! (r+1.0/v1)) $! (n-1)

У C#-а с меморизацией в этом месте консилась-бы память ;)

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

блин мемоизация, деградация, походу хардварные кэши отменили...

долбучие маркетологи...

anonymous
()

Покажите мне человека, который использует лямбды в C#? Да хотя бы покажите такого, который использует лямбды в Питоне, более сложные, чем вот такие:

reduce(lambda x,w: x+w, my_list)

Есть такие люди?

Кстати, в Python3.0 уже нет reduce (запихан куда-то очень глубоко), а Гвидо открытым текстом говорит, что не любит ФП. Интересно, какая участь постигнет лямбды в C#?

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

> Кстати, в Python3.0 уже нет reduce

почему-то этот долб считает, что использование временной переменной и цикла более интуитивно. Вот придурок! А что, если мне нужно склеить список строк в строку, разделённую запятыми?

['a', 'b', 'c'] -> 'a,b,c'

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

>> Кстати, в Python3.0 уже нет reduce

>почему-то этот долб считает, что использование временной переменной и цикла более интуитивно. Вот придурок!

Долб и придурок здесь ты - потому что в Python 3.0 _есть_ reduce.

> что, если мне нужно склеить список строк в строку, разделённую запятыми?

> ['a', 'b', 'c'] -> 'a,b,c'

Как насчет менее тривиальных примеров?

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

>Да хотя бы покажите такого, который использует лямбды в Питоне:
Вот, например:
trmsk = lambda msk, grc: (('\%i' % grc)+trmsk(msk[1:], grc+1) if msk[0] in '*?' else (msk[0]+trmsk(msk[1:], grc))) if msk else ""

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

>>Да хотя бы покажите такого, который использует лямбды в Питоне:

>Вот, например:

"Horror... Horror..." (c)

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

>trmsk = lambda msk, grc: (('\%i' % grc)+trmsk(msk[1:], grc+1) if msk[0] in '*?' else (msk[0]+trmsk(msk[1:], grc))) if msk else ""

Если это не извращение, то я вообще ничего не понимаю в этом мире. А можно этот код как-то отформатировать или Питон не позволяет? Мало того, что нихрена не понятна сигнатура функции, так оно ещё попахивает перловкой aka write-only. По-моему, выглядит это как выпендрёж на ровном месте. Чтобы добавлять числа в строку, не обязательно так изголяться. Видимо, Гвидо понимает, что ФП Питону как собаке пятая нога, потому и не жалует редьюсы.

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

т.е. оно, конечно, есть но употреблено в подходящем контексте

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