如何在 F# 中连接列表(和其他集合)?

How to concatenate lists (and other collections) in F#?

F# 是否提供惯用的连接方式

你也可以连接元组吗?

sequence and list together

这个没有特殊功能。如果序列是第一个而列表是第二个,那么您必须选择将第一个转换为列表(然后在使用 List.append 附加时复制它)或使用 Seq.append 后跟 List.ofSeq 这将复制两个列表。

所以编写自己的函数是有意义的。

list and list together into a list? (non-destructive)

List.append 这样做。

list and list together into a list if it is destructive

列表是不可变的,因此没有破坏性的追加。

mutable arrays together, destructively, into another mutable array?

在 .NET 中,您不能调整数组的大小,因此没有破坏性的方法可以这样做。 Array.append 创建一个新数组(并且会比其他选项更快,因为它预先知道结果的大小)。

And can you concatenate tuples too?

没有。类型系统不允许您表达将附加元组的函数类型(它们必须具有静态已知大小)。

@运算符是连接多个列表的一种简单而整洁的方法:

let allElements = list1 @ list2 @ list3 @ list4 @ list5 @ list6