2011-06-08 20 views
9

是否支持在RPython发电机,因为我刚才读PyPy的文档中的东西,说他们不是是在RPython中支持的生成器吗?

PyPy Doc - Coding Guide

他们似乎很容易,因为在生成每一代一步被翻译成像C是静态类型语言函数调用。

有人可以解释为什么吗?或者在这个主题上多说一些。我目前正在学习编写RPython安全代码的基础知识。

+1

这是一个正交的问题,但是你写什么语言的翻译?如果你不是,那么RPython可能是错误的解决方案。 – DSM 2011-06-08 10:17:24

+0

我不是在写解释器,正如我所说我想知道编写安全的RPython代码的技巧,而在阅读PyPy编码指南时,我对这个生成器的东西感兴趣 – 2011-06-08 11:38:51

回答

21

不支持发电机,只是因为当时不需要发电机。这个问题在C中并不具有大致相同的功能,但需要保持一个发生器帧。由于RPython框架被转换为C框架,为了支持完整的Python生成器,您需要一些支持来获取C框架并将其复制到其他地方或其他等效框架。

这很简单/不需要,并没有实施。

+0

当你说'保持生成器框架活着'你是否根据产量来引用发电机? – 2011-06-08 12:43:43

+0

yeild无法生成的生成器可以在内存中转换为基于类的生成器吗?我想这不需要它自己的框架 – 2011-06-08 12:44:39

+0

@costy:我很确定这样的转换是可能的(或许类似于[lambda升级](http://en.wikipedia.org/wiki/Lambda_lifting) ,但即使如此,这将是很多工作。 – delnan 2011-06-08 18:32:24

相关问题