问题标签 [seq]
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.
f# - Seq 模块中的聚合函数
我正在尝试向 Seq 模块添加一些额外的聚合函数。我正在查看此处列出的一些功能的实现:
https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/seq.fs
其中一个免责声明是“此函数返回一个序列,该序列在迭代该序列后立即消化整个初始序列。因此,该函数不应与大型或无限序列一起使用。” 许多函数都是如此,例如 GroupBy。
第一个问题:是否有编写可以有效处理大序列的聚合函数的方法?我知道“大”是主观的;我只是在寻找编写此类函数的通用模式。
第二个问题:如何确保像 Dictionary(在聚合函数中定义的)这样的集合被有效地垃圾收集?我知道字典超出范围时应该被收集,但是有没有办法明确指出这一点?鉴于字典的作用域保留在函数内,我不能调用 .Clear() 对吗?
map - 将 seq 扩展为单个标量
我想将 map 生成的惰性序列的成员作为单独的参数提供给另一个函数。是否有拼接(惰性)序列的函数?
f# - F# 中的拆分序列
我应该按元素的属性seq<a>
拆分seq<seq<a>>
。如果此属性等于给定值,则必须在该点“拆分”。我怎样才能在FSharp 中做到这一点?
如果必须在该项目处拆分或不拆分,则向其传递一个返回布尔值的“函数”应该很好。
示例:输入序列:seq: {1,2,3,4,1,5,6,7,1,9}
当它等于 1 时,应在每个项目处拆分,因此结果应为:
join - 如何通过属性将 seq 附加到另一个?
我在FSharp有一个 seq 序列。如果谓词为它返回 true,我想将一个 seq 加入前一个。
样本:
我想将一个 seq 加入到前一个,如果 seq 从 1 开始,那么结果应该是在这种情况下:
seq [seq[2;3;4;1;5;6;7;1;9];seq[2;3;5;7]
]
有什么不错的功能性方法吗?
我刚刚开始将我的长计算过程从 C# 转换为 F#,并且我对即使在几个小时的工作和我对 FSharp 的初学者水平的了解后我可以实现的性能改进印象深刻。
我从亚马逊买了一本名为“Beginning F#”的书。这真的很棒,但我现在主要应该使用 seqs、lists、maps、collections 并且这个主题没有像我需要的那样详细解释。有人会这么好心地建议我一个关于这些主题的好资源吗?
提前谢谢!
haskell - 单子:seq 和 >>= 有什么区别?
有什么不同?是否seq
保证更多的流动条件?
f# - Seq.Map 字符串->字符串
全部!
这段代码有什么问题?我无法理解我对 Seq.Map 做错了什么。这是错误消息:“单元”类型与“seq<'a>”类型不兼容
Seq.Map 上有什么可以理解的例子吗?
PS来自wiki的示例(有效):
r - 如何生成具有指定增量步骤的列表?
如何生成具有指定增量步长(例如 2)的向量?例如,我如何产生以下
scala - Scala - 为什么不能为包含 Vector 和 List 的列表推断 Seq 列表?
在 2.8.1/2.9.0.1 REPL 中尝试以下操作,第一个给出错误。
虽然这成功:
在第一种情况下,scala 试图推断的类型是什么?它是具有结构类型的 Seq 吗?为什么不能统一 Vector 和 List?这是一些缺少的功能,还是以这种方式(需要显式类型 def)以防止自己在脚上开枪?
list - 带有序列运算符的 F# 列表
在查看了这两个线程之后:F# 是否具有与 Haskell 相同的功能?,从 F# 中具有 N 个不同索引的序列中获取 N 个元素 ,我一直想知道在列表上使用序列运算符的最佳方法,或者即使使用它们。
我目前是 F# 的新手,我正在编写一个程序,该程序必须处理从 HtmlAgilityPack 获得的大量序列。Seq 模块中有一些有趣的运算符,但正如这些线程中所述,它可能与性能相关性很差,如果我们不得不在 seq -> list 之间不断转换,它也会使代码变得杂乱无章,无法解决问题。 . 这就是我最初开始学习 F# 的原因。
一个简单的例子是当我需要获取列表的“N”个元素时:
那么,任何人都可以阐明处理这些情况的最佳方法吗?我可以使用 Seq.take 和 Seq.skip 解决解决方案,但众所周知这是非常低效的。另一方面,将功能内置到标准库中并且不得不重新实现它以在不同的集合上使用相同的概念,或者通过显式转换使代码更脏,这是一种耻辱。
我怎么能看到'list -> seq'和'seq -> list'之间的每次转换对性能的影响?
非常感谢。
clojure - 与 Clojure 的序列不一致?
Clojure:
我了解发生了什么,但这应该以不同的方式工作吗?