2011-06-08 21 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

相關問題