【发布时间】:2017-08-20 13:05:02
【问题描述】:
目前我还在做这个问题:
制作一个通用的无限序列初始化函数 创建无限的惰性序列。它将作为参数的函数 从当前值计算下一个值。换句话说,它 应该是 naturalNumbers 等函数的“工厂”。因此,如果我们 调用我们的函数 initSequence,然后 initSequence(n=>n+1) 将返回 一个等效于 naturalNumbers 的函数。
这个模板是给定的
interface LazySequence<T> {
value: T;
next(): LazySequence<T>;
}
// Implement the function:
function initSequence<T>(transform: (value: T) => T): (initialValue: T) => LazySequence<T>
{
// Your code here
}
到目前为止,这是我在 TypeScript 中的代码
interface LazySequence<T> {
value: T;
next(): LazySequence<T>;
}
// Implement the function:
function initSequence<T>(transform: (value: T) => T): (initialValue: T) => LazySequence<T>
{
// Your code here ...
return () => initSequence(v=>v+1) => LazySequence;
}
而且代码似乎没有相应地工作。有人可以帮忙吗?那么任何人都可以对惰性评估,惰性迭代和其他惰性事物做出明确的解释吗? 非常感谢
【问题讨论】:
-
您是否有理由不为此使用现有工具,例如生成器(语言内置)或可观察对象(通过 Rx 之类的库)?
-
您的代码似乎没有进行类型检查。还是我错过了什么?
-
这似乎是一个“家庭作业”。如果是这种情况,请参考meta.stackoverflow.com/questions/334822/…
标签: javascript typescript lazy-evaluation lazy-sequences