在查看了这两个线程之后:F# 是否具有与 Haskell 相同的功能?,从 F# 中具有 N 个不同索引的序列中获取 N 个元素 ,我一直想知道在列表上使用序列运算符的最佳方法,或者即使使用它们。
我目前是 F# 的新手,我正在编写一个程序,该程序必须处理从 HtmlAgilityPack 获得的大量序列。Seq 模块中有一些有趣的运算符,但正如这些线程中所述,它可能与性能相关性很差,如果我们不得不在 seq -> list 之间不断转换,它也会使代码变得杂乱无章,无法解决问题。 . 这就是我最初开始学习 F# 的原因。
一个简单的例子是当我需要获取列表的“N”个元素时:
listOfRows
|> Seq.take 2
// Now I don't have a list anymore, it returns a sequence
|> List.ofSeq
那么,任何人都可以阐明处理这些情况的最佳方法吗?我可以使用 Seq.take 和 Seq.skip 解决解决方案,但众所周知这是非常低效的。另一方面,将功能内置到标准库中并且不得不重新实现它以在不同的集合上使用相同的概念,或者通过显式转换使代码更脏,这是一种耻辱。
我怎么能看到'list -> seq'和'seq -> list'之间的每次转换对性能的影响?
非常感谢。