如果我有一种具有一流功能的编程语言。共享生成器函数时的语义应该是什么?
例如:
var f = function() {
foreach (i in 0..42)
yield i;
}
int a = f(); // 0
int b = f(); // 1
// Assigning the generator function
var g = f;
int c = g(); // ??
int d = f(); // ??
我可以想象三件事:
- c == 2, d == 3 表示生成器函数是共享的
- c == 0, d == 2 表示创建了一个新的生成器函数,其值已初始化
- c == 2, d == 2 表示通过复制生成器的当前状态来创建一个新的生成器函数
在我看来,最好的答案将提供最有说服力的论据来做一种或另一种机制。我经常发现现有技术是最有说服力的论据。