Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 2, 2011 10:09:27

vvpoloskin
От:
Зарегистрирован: 2011-09-02
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Функциональное программирование

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

И вообще, как работает стек в обычном CPython? Интересует в общем и в случае замыкания в частности.
Запускать интерпретатор под GDB как-то душу не греет.
Заранее спасибо.



Офлайн

#2 Сен. 2, 2011 10:17:57

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Функциональное программирование

1. Нет
2. Смотрите FrameObject



Офлайн

#3 Сен. 2, 2011 10:42:24

vvpoloskin
От:
Зарегистрирован: 2011-09-02
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Функциональное программирование

Хорошо.
Появилась мысль. Применить map на бесконечную последовательность или на замкнутый список. Осталось понять, как можно сделать чт-то наподобие break в функции map.



Офлайн

#4 Сен. 2, 2011 11:18:05

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Функциональное программирование

Андрей Светлов

Андрей Светлов
1. Нет
а itertools.count() и иже с ним?



Офлайн

#5 Сен. 2, 2011 11:56:24

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Функциональное программирование

Мне почему-то представилась бесконечная рекурсия, а не бесконечный генератор.



Офлайн

#6 Сен. 2, 2011 14:23:07

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Функциональное программирование

Андрей Светлов
а если что-то типа хвостового вызова? Как тут, например: http://paulbutler.org/archives/tail-recursion-in-python/ . Правда, while все равно используется, потому что в питоне нет реализации tail call, а как говорил Гвидо, и не будет.



Офлайн

#7 Сен. 2, 2011 21:24:18

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Функциональное программирование

Бесконечная хвостовая рекурсия достигается и изменением байт-кода, правда я так никогда не поступлю, наверное.

> while. Но для бесконечного цикла это не подходит, по крайней мере, в явном виде.
Можешь пояснить?

..bw



Отредактировано (Сен. 2, 2011 21:26:14)

Офлайн

#8 Сен. 3, 2011 11:24:51

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Функциональное программирование

бесконечный цикл:
while True:
print ‘do something’



Офлайн

#9 Сен. 4, 2011 00:21:39

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

Функциональное программирование

Fibio, вопрос о реализации бесконечного цикла средствами функционального программирования. В вашем примере представлен императивный подход, который для всех очевиден.



Офлайн

#10 Сен. 4, 2011 14:48:28

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Функциональное программирование

Enchantner
питоне нет реализации tail call, а как говорил Гвидо, и не будет.
А в чём сложность сделать хвостовую рекурсию? Даже я её делал как-то раз.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version