поддерживаются ли генераторы в RPython?

Поддерживаются ли генераторы в RPython, потому что я только что прочитал что-то в документации PyPy, в котором говорится, что они не

Документ PyPy — Руководство по программированию

Кажется, что их легко перевести на статически типизированный язык, такой как C, потому что каждый шаг генерации генерируется в вызове функции.

Может кто-нибудь объяснить, почему? Или пролить свет на эту тему. В настоящее время я пытаюсь изучить основы написания безопасного кода RPython.


person costy.petrisor    schedule 08.06.2011    source источник
comment
Это ортогональный вопрос, но для какого языка вы пишете интерпретатор? Если нет, то RPython, вероятно, является неправильным решением.   -  person DSM    schedule 08.06.2011
comment
Я не пишу интерпретатор, поскольку я сказал, что хочу знать советы по написанию безопасного кода RPython, и пока я читал PyPy Coding Guide, я был заинтригован этим генератором.   -  person costy.petrisor    schedule 08.06.2011


Ответы (1)


Генераторы не поддерживаются просто потому, что в то время они были не нужны. Проблема на самом деле не в том, чтобы иметь примерно эквивалентную функциональность в C, а в необходимости поддерживать работоспособность фрейма генератора. Поскольку фреймы RPython транслируются в фреймы C, для поддержки полных генераторов Python вам потребуется некоторая поддержка для получения фрейма C и его копирования в другое место или какой-либо эквивалент.

Это было просто сложно/не нужно и не было реализовано.

person fijal    schedule 08.06.2011
comment
Когда вы говорите «поддерживать жизнь фрейма генератора», вы имеете в виду генераторы, основанные на доходности? - person costy.petrisor; 08.06.2011
comment
Нельзя ли генераторы, реализованные с помощью yield, преобразовать в памяти в генератор на основе классов? Которому, я полагаю, не нужна собственная рамка - person costy.petrisor; 08.06.2011
comment
@costy: я почти уверен, что такое преобразование возможно (возможно, аналогично лямбда-лифтингу). ), но даже тогда это будет много работы. - person ; 08.06.2011
comment
да, я говорю о генераторах на основе доходности. Трансформация, конечно, возможна, просто нам было все равно. Итераторы общего назначения более интересны и, кстати, не поддерживаются RPython. - person fijal; 10.06.2011