![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
Где можно почитать про программирование с использованием lambda-функций?
Смотрел это: http://ru.wikipedia.org/wiki/%D0%9B%D1%8F%...%BD%D0%B8%D0%B5 И это: http://sapr.mgsu.ru/biblio/ex-syst/Glava4/Index7.htm Очень мало и примитивно Подскажите пару примерчиков начиная от факториала и заканчивая... хз чем ) |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 9 Всего: 70 |
и не про python:) Лямбды в python увы ограничены http://www.secnetix.de/~olli/Python/lambda_functions.hawk |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
Daevaorn, эм.... как-то все-равно хило...
ну да ладно, вот что сделал:
|
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 9 Всего: 70 |
Да, твои примеры хороши, их надо в FAQ добавить.
Просто, как мне видится, что лямбда удобна в первую очередь как безымянная функция, которая может быть объявлена, что называется, in place. |
|||
|
||||
| albertn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
Интересно, чем же они ограничены то? На сколько я знаю в Lisp им большего значения то и не дается. А про использование lambda функций - они нужны в большенстве случаев, если необходимо в одну функцию передать в качестве параметра другую функцию, которая больше нигде не будет использоваться. По-этому нет смысла создавать какую-нибудь именованную функцию, а проще создать lambda функцию (и места меньше будет занимать). |
|||
|
||||
| setq |
|
|||
|
Unregistered |
||||
|
||||
| albertn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
||||
|
||||
| setq |
|
|||
|
Unregistered |
А какие можно?
<Думает>. Если в Lisp операторов нет, то наверно и обработка исключений и циклы и присваивание делается через выражения. Значит в Lisp-лямбде может быть то, чего не бывает в Python-лямбде... |
|||
|
||||
| albertn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
арифметические А в Python-лямбде бывают конструкции, специфичные только для Python, как это не странно. И все-таки я бы просил не путать функциональность оператора и функциональность языка. |
|||
|
||||
| Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
А почему именно из Лиспа? В других языках функционального программирования лямбды нет? Надо полагать, лямбды взяты из лямбда-исчисления (есть такой раздел в математике), а не из конкретного языка... -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
| albertn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
А каких языках функционального программирования? Функции тоже были взяты из математики, да и все программирование от части отрасль математики. А в данном случае фп у питона заимствовано у лисп (и как не странно все об этом пишут) |
|||
|
||||
| Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
albertn, посмотри декларативное программирование Добавлено @ 14:17 Если рассматривать функции в языках императивного программирования, то они оччень далеки от математических функций, ибо возможны побочные эффекты... Кстати, побочных эффектов и питоновская лямда не лишена. -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
| albertn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
Присутствующий там список языков толи Lisp с приставкой, толи язык, имеющий корни от Lisp.
Один электрон в атоме очень далек от другого электрона в этом-же атоме, ибо он летает по совершенно другой траектории Ты же на сколько я понимаю математик, значит ты не должен прибегать к выражениям типа "далеки", "очень далеки", "близки". На защите кандидатской у одного знакомого к нему прикопались за использование подобных слов. А изначально то мысль была, у кого откуда корни растут, а не близки ли они или нет. Если бы лиспосвская лямбда была лишена побочных эффектов, то язык бы ровным счетом ничего не умел бы делать. |
|||
|
||||
| SAnty |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.2.2006 Репутация: 3 Всего: 5 |
Почитай здесь :
http://ru.diveintopython.org/apihelper_lambda.html Если тебе надо начиная из факториала и дальше посмотри здесь, более 200 примеров использования lambda http://aspn.activestate.com/ASPN/search?qu...type=Subsection Спасибо. |
|||
|
||||
| Artemios |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Еще раз повторю, корни растут из лямда-исчисления Чёрча. Лисп был первым языком, попытавшимся его использовать. А императивные языки базируются на совершенно ином принципе: модели Фон Неймана.
Добавлено @ 12:58
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||||||
|
|||||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |