问题标签 [lazy-sequences]

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 投票
1 回答
932 浏览

python - 有没有办法在 Python 中构造惰性序列?

有一个 Django 视图,它Member使用特定的过滤器从数据库中加载对象。

现在我需要改变这个逻辑,先呈现一个特定Member的,然后让其余的顺其自然

最直接的方法是立即执行查询,获取列表,删除并在开头插入项目。但是我很好奇是否还有任何方法可以利用它QuerySet的懒惰性质

在 C# 中,我会写:

作为一个循环将通过members,它会首先得到specificMember,然后使用任何延迟加载逻辑原来db.Members使用

有没有办法在 Django 和 Python 中做同样的事情?

0 投票
5 回答
423 浏览

clojure - clojure rest 和 next 相关

我正在关注Clojure 的喜悦,我对这两个陈述感到困惑

因此,输出是

这本书继续解释说

抓取使用 rest 构建的惰性序列中的第一个元素会导致预期的实现。但是用 next 构建的 seq 不会发生同样的情况,因为它之前已经实现了。使用 next 会导致惰性 seq 的元素变得不那么惰性,如果实现成本很高,这可能是不希望的。

我迫切的问题是为什么“非常懒惰”有一个额外的点?我的想法是 'print' 会在调用时打印它的参数,无论 ifnextrest.

谢谢

0 投票
3 回答
668 浏览

clojure - Clojure 函数 (nth [coll index]) 和组合 (last (take index coll)) 有什么区别

我正在尝试阅读 Stuart Halloway 的《Programming Clojure》一书。这整个功能性的东西对我来说是非常新的。

我明白如何

懒惰地生成斐波那契数列。我不明白为什么

工作,而

引发 OutOfMemoryError。有人可以解释一下这两种表达方式有何不同吗?(nth) 是否以某种方式抓住了序列的头部?

谢谢!

0 投票
1 回答
1001 浏览

clojure - clojure 存储与在表达式中使用序列

Helo,为了学习 clojure,我对作用于序列的 clojure.core 函数产生了兴趣。最近,我注意到一些奇怪的行为,想解释一下以下表达式之间的区别:

我想要做的是:

但是,当我存储错误(iterate inc 1)时:def

iterate inc 1有人可以解释一下在表达式中直接存储和使用它有什么区别吗?我知道这a是一个懒惰的序列,但我错过了一些东西......

非常感谢您的宝贵时间。

0 投票
1 回答
4060 浏览

clojure - 如何防止 Clojure 异常:clojure.lang.LazySeq 不能强制转换为 clojure.lang.IFn

我正在尝试将从映射操作返回的(惰性)序列传递给另一个映射操作,以便我可以查找第一个序列中的元素。该代码正在从文本文件(行/列格式)中解析一些足球赛程,对其进行清理,然后返回一张地图。

这是代码:

我正在采取的方法是:

  1. 清理列数据的向量(删除前导/尾随空格)
  2. 使用 zipmap,将列名关键字与其对应的列数据中的元素组合起来(注意,并非所有列都被使用)

问题是,在 zipmap 中使用trimmed -cols会导致

java.lang.ClassCastException:clojure.lang.LazySeq 无法转换为 clojure.lang.IFn

我想我知道为什么会这样……因为trimmed -cols是一个 LazySeq,所以从 zipmap 调用的映射反对接收一个非函数作为它的第一个参数。

为了解决这个问题,我可以将let更改为:

但这感觉不是“最佳”选择。

所以:

  1. 将映射操作的结果用作另一个映射的“函数”参数是否有一个很好的通用解决方案?
  2. 是否有更好的方法可以从原始值数据向量中导出 {: value} 对的映射,而不使用所有向量元素?

(我不愿要求一个惯用的解决方案,但想象在某个地方必须有一种普遍接受的方式来做到这一点。)

0 投票
6 回答
3216 浏览

list - Prolog中的惰性列表?

Prolog中可以有惰性列表吗?类似于以下内容:

尽管这显然不像它所写的那样工作。

0 投票
3 回答
7049 浏览

ruby - 用索引无限次做某事

做项目 euler #2 的更多红宝石方式中,部分代码是

有没有办法转变i += 1为更具功能性的编程风格构造?

我能想到的最好的是

因为你不能调用.times浮点数。

0 投票
2 回答
588 浏览

clojure - 查看clojure中是否有部分数据是惰性的

clojure 中是否有一个函数可以检查数据是否包含一些惰性部分?

背景:

我正在用clojure构建一个小型服务器。每个连接都有一个状态、一个输入流和一个输出流

服务器从输入流中读取一个字节,并根据该值调用几个函数之一(以状态以及输入和输出流作为参数)。这些函数可以决定从输入流中读取更多内容,向输出流写入回复,并返回一个状态。这部分循环。

只要状态不包含任何惰性部分,这一切都会正常工作。如果状态中有一些惰性部分,那么当它被评估时(稍后,在另一个函数期间),可能会开始从输入流读取并写入输出流。

所以基本上我想为所有这些函数添加一个后置条件,说明返回状态的任何部分都不能是惰性的。有没有检查惰性序列的函数。我认为检查状态本身是否是惰性序列很容易,但我想检查例如状态是否具有包含哈希映射的向量,其中一个值是惰性的。

0 投票
1 回答
79 浏览

performance - 惰性序列突然减速

我有这个代码:

这是为了在我的程序的每次迭代中将最近历史的滚动窗口添加到地图中。我发现,经过一定次数的迭代(约 50 次)后,我的程序会显着且渐进地减速。

而,如果我将代码更改为:

然后程序在每次迭代中运行的时间稍长(因为正在实现惰性序列),但运行一致并且没有减慢。

作为 Clojure 的新手,我不明白……这与分块序列有关吗?

0 投票
2 回答
246 浏览

clojure - 在 Clojure 中创建惰性序列的非线性减速

我实现了一个函数,它将给定输入集合的 n-gram 作为惰性序列返回。

当我用更大的输入集合调用这个函数时,我希望看到执行时间线性增加。但是,我观察到的时机比这更糟:

corpus是一个Cons字符串标记。

是什么导致了这种行为,我该如何提高性能?