我是 F# 新手,我注意到数组仍然是可变的。 这是因为性能影响还是因为固有的 .NET CLR 类型系统? 我知道不可变列表确实存在。
谢谢你
这实际上是即将推出的语言功能。很多人都同意 F# 应该有不可变数组,包括语言创建者,请参阅语言设计提案
至于为什么它从一开始就不存在,与其他功能相比,它可能只是一个较低的优先级。
与 OCaml 一样,F# 是一种实用语言,而不是纯粹的语言。这是像我这样的一些人最喜欢这些语言的地方。
在 OCaml 中,数组是可变的,F# 桥接了 OCaml 和 .NET CLR 库。那么拥有可变数组就非常有意义了。
对于初学者来说,这两个世界之间的桥梁肯定有点令人不安,最好的办法就是保持现状并继续学习语言。正如一开始所说,思考务实而不是纯粹。
我不确定你关于可变列表的说法。 F# 列表是不可变的。您可以使用可变的.Net CLR System.Collection.Generic.List。但是当谈论列表时,FSharpers 意味着不可变的 []、[1..3],或者通过名称:Microsoft.FSharp.Collections.FSharpList`1 .
F# 集合:
https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/fsharp-collection-types
不可变的核心类型是列表、映射和集合。