问题标签 [lazy-evaluation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
824 浏览

linq - Enumerable.ToDictionary 是否只检索它需要的内容?

我正在使用 Enumerable.ToDictionary 从 linq 调用中创建字典:

该调用会获取每个术语的全部内容,还是只会从我的数据提供者那里检索 TermID 和 Name 字段?换句话说,如果我这样写,我是否会节省自己的数据库流量:

0 投票
1 回答
5079 浏览

clojure - Clojure-为什么这段代码在 clojure 中不起作用,我是否缺少一些惰性评估陷阱?

我是 clojure 的新手,并通过 SICP 学习它。

我无法让 SCIP 1.3.1 中的这段代码工作。

我错过了什么?

这是错误消息:

0 投票
4 回答
7124 浏览

language-agnostic - 惰性评估的优点是什么?

与急切评估相比,惰性评估有什么优势?

有什么性能开销?惰性评估会变慢还是变快?为什么(或者它取决于实现?)?

在大多数实现中,惰性求值实际上是如何工作的?对我来说,这似乎会慢得多并且占用大量内存,因为变量必须存储操作和数字。那么在 Haskell 这样的语言中它是如何工作的(注意,我实际上并不知道那种语言)?惰性是如何实现和完成的,以便它不会非常慢/消耗更多空间?

0 投票
4 回答
256 浏览

scala - 将具有 N 个参数的 def 实现为 FunctionN 类型的 val

我可以使用不带参数def的 a来实现:valdef

为什么这不能扩展到def将 N args 实现为 val FunctionN?我希望可以实现类似的东西:

带有懒惰的功能val。就像是:

我知道这种语法似乎不适用于 2.8。有什么我遗漏的东西,为什么我不能将参数作为函数来实现defval

0 投票
2 回答
1395 浏览

python - Python中的懒惰评估?模块之间?

我不确定在 Python 中这样的事情是否可能,但如果是的话,它会非常有用(至少在这种情况下对我来说)。

我有一个测试框架,我想在其中将测试配置与测试命令分开。这很有用,因为它允许您混合和匹配配置/测试,而无需实际修改任何代码。我本质上只是一个简短的运行脚本,它采用配置模块和测试模块的名称,然后加载并运行两者,如下所示:

唯一的问题是我实际上希望测试脚本对配置参数有一些有限的认识。理想情况下,我希望能够在 test/commands 模块中执行以下操作:

其中 LazyArg1 和 LazyArg2 是在配置模块(或导入两个配置/命令的运行器模块)中定义的方法。有什么方法可以延迟对这些函数的评估,直到它们被实际定义?

我也愿意接受其他方式来达到同样的目的。我唯一的另一个想法是让配置模块将字典写入文件,然后让命令模块导入它(假设你只是写出repr(mydict))。这不是很吸引人..虽然它会起作用。

0 投票
3 回答
1251 浏览

wolfram-mathematica - Mathematica 7 是否支持惰性求值?

假设我有一个保存在变量中的矩阵列表G并应用以下操作:

Minors返回一个矩阵,其中每个元素都是删除 (i,j) 行/列的行列式,并Diagonal返回矩阵的对角元素列表。

我的问题是关于这些命令的评估 - 显然我不希望评估所有条目。Mathematica 是懒惰的,因为首先解析对角线,只从 Minors 中提取所需的元素,还是构建次要矩阵,然后提取其对角线元素?

这是懒惰评估的一般问题,但是对于 Mathematica 来说是新手,我会很感激有关如何改进特定问题的语法的任何提示。

0 投票
3 回答
601 浏览

haskell - 用折叠组合单子动作

让我们使用 type 的函数(Monad m) => a -> m a。例如:

我希望能够多次应用它。我尝试的第一件事是

问题是它不适用于大型n

它也不起作用:

实际上,有效的是使用($!)严格运算符

有更好或更惯用的解决方案吗?或者可能是更严格的?f如果是重量级函数,我仍然很容易发生堆栈溢出。

UPD:我发现times用有针对性的形式写作也不能解决编写重量级单子动作的问题。这适用于 fx = Just (x+1) 但在现实世界中失败:

0 投票
2 回答
5954 浏览

python - Python 惰性迭代器

我试图了解迭代器表达式的评估方式和时间。以下似乎是一个懒惰的表达:

然而,这个在构造上失败了:

我没有名为“xxx”的文件。不过,既然这东西懒惰,为什么这么快就失败了?

谢谢。

EDI:哇,我做了一个懒惰的!

0 投票
3 回答
126 浏览

php - mysql查询php

我正在向 1000 人发送电子邮件。我有一个 php 发送电子邮件。它工作正常。我想知道,在我的查询中,我怎样才能一次发送 100 个。

是这样的吗:

ETC...

谢谢。

0 投票
6 回答
1819 浏览

python - 在 Python 中热切地评估布尔表达式

有没有办法(使用eval或其他方法)在 python 中急切地评估布尔表达式?

让我们看看这个:

哎呀!这非常好,因为无论y' 值如何,这都是错误的。问题是,y甚至可以是未定义的,我想得到那个例外。即使事先知道结果,如何让 python 评估所有表达式?

希望我说清楚了!谢谢,
曼努埃尔

编辑:请记住,不能修改表达式,只能修改评估技术。