【问题标题】:are generators supported in RPython?RPython 支持生成器吗?
【发布时间】:2011-06-08 10:09:35
【问题描述】:

RPython 是否支持生成器,因为我刚刚在 PyPy 的文档中读到一些内容说它们不支持

PyPy Doc - Coding Guide

它们似乎很容易被翻译成像 C 这样的静态类型语言,因为每个生成步骤都是在函数调用中生成的。

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

【问题讨论】:

  • 这是一个正交问题,但是你用什么语言编写解释器?如果你不是,那么 RPython 可能是错误的解决方案。
  • 我不是在写解释器,正如我所说,我想知道编写安全 RPython 代码的技巧,当我阅读 PyPy 编码指南时,我对这个生成器很感兴趣

标签: python generator pypy rpython


【解决方案1】:

不支持生成器只是因为当时不需要它们。问题不在于在 C 中真正具有大致等效的功能,而是需要保持生成器的框架处于活动状态。由于 RPython 框架被转换为 C 框架,因此要支持完整的 python 生成器,您需要一些支持来获取 C 框架并将其复制到其他地方,或类似的东西。

这很困难/不需要并且没有实施。

【讨论】:

  • 当你说'保持生成器框架活着'时,你指的是基于产量的生成器吗?
  • 不能用 yeild 实现的生成器在内存中转换为基于类的生成器吗?我想它不需要自己的框架
  • @costy:我很确定这样的转变是可能的(也许类似于lambda lifting),但即便如此,它也需要做很多工作。
  • 是的,我谈论的是基于产量的生成器。转型当然是可能的,只是我们不在乎。通用迭代器更有趣,但 RPython 不支持
猜你喜欢
  • 1970-01-01
  • 2015-06-30
  • 2015-02-27
  • 2015-09-22
  • 1970-01-01
  • 2012-08-07
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多