【发布时间】:2016-05-12 08:01:18
【问题描述】:
在 ES6 风格的 JavaScript 中,引入了生成器函数,因此这种构造是可能的:
var fib = function *(max) {
var x = 0, y = 1, tmp = 1;
while (tmp<max) {
yield tmp;
x = y;
y = tmp;
tmp = x + y;
}
}
var fibgen = fib(3000);
这里的fibgen 是一个生成器,它将产生低于 3000 个斐波那契数。
F# 中的等效构造是什么?
LE:我不是在寻找algorithm for Fibonacci series。但是对于某些在迭代时会延迟发出值的生成器函数。
【问题讨论】:
-
您尝试的解决方案在哪里?
-
我是函数式编程的初学者。我能想到的只是命令式的实现。这不是我想要的。
-
您应该澄清(通过编辑问题)您在寻找什么。 F# 中的等效构造实际上与使用序列表达式和可变变量相同。你想知道惯用的 F# 方法吗?还是惯用的函数式方法?
-
我同意这还不够清楚。我不是在寻找斐波那契数列的算法。但是对于一些在迭代它时会发出一个值的生成器函数。很抱歉造成混乱!
-
我知道您是 SO 的新手,但是在询问您尝试或发现的问题时,我们可以看到您并没有懒惰并让我们做所有事情工作。因此,您正在对您的问题投反对票。
标签: javascript f#