首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在v8中实现无限列表

在v8中实现无限列表
EN

Stack Overflow用户
提问于 2020-01-27 15:13:58
回答 1查看 73关注 0票数 0

我是一名计算机科学专业的学生,作为学校项目的一部分,我被要求要么在v8引擎中找到一个漏洞,要么进行一些非常好的优化,要么添加一个新特性。

我选择添加一个新特性,如下所示:

代码语言:javascript
复制
function* numbers() {
  i = 1;
  while (true) {
    yield i++;
  }
}

var gen = numbers();

var l = [...gen];

var n = l[42];

换句话说,我希望有可能使用析构语法来创建一个列表,该列表可以容纳无限多的对象并访问它们。

在Haskell中可以这样做,我也想尝试用JavaScript来做同样的事情。

如果v8的开发人员能给我指明正确的方向,那就太棒了。

我已经有了一个工作环境,可以编译引擎,读取源代码,并在带有符号的d8二进制文件上运行调试器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-27 19:00:19

这里是V8开发人员。

首先:要明确的是,堆栈溢出并不是一台做家庭作业的机器。(你只要求“正确的方向”,没关系。)

其次: V8将JavaScript作为规范来实现,因此任何任意的“新特性”都不会出现在我们的存储库中,请注意。

第三:基思有几个优点。特别是,您建议的语法已经是有效的JavaScript,并热切地评估生成器。当生成器产生无限的值流时,您的想法是切换到懒惰的评估吗?后退一步,思考一下这个想法的含义。

最后,如果您想出了可行的语法/语义,那么在V8中这样做仍然需要大量的工作,因为没有类似的先例。您可能希望使用元素拦截器,并将生成器存储在私有属性中。我认为使用代理在纯JavaScript中填充整个过程要容易得多。

(重新考虑你对项目的选择也许是个好主意,但这取决于你。这也是一个相当古怪的项目描述开始.他们认为“寻找开发或做出真正好的优化”有多难?如果您发现了漏洞,请执行让我们知道!)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59933887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档