为什么没有F#不可变数组?

5

我是F#的新手,我注意到数组仍然是可变的。这是因为性能影响还是因为固有的.NET CLR类型系统造成的?我知道不可变列表确实存在。

谢谢

2个回答

3

更新的 RFC 链接:https://github.com/fsharp/fslang-design/blob/main/RFCs/FS-1094-immarray.md - Lyndon Gingerich

0

像OCaml一样,F#是一种实用而不是纯粹的语言。这就是一些人,比如我,最喜欢这些语言的原因。

在OCaml中,数组是可变的,而F#则连接了OCaml和.NET CLR库。那么,拥有可变数组是很合理的。

为什么OCaml有可变数组?

对于初学者来说,这两个世界之间的桥梁确实有点令人不安,最好的方法是接受现实并继续学习语言。正如开始所说,想象一个 实用 的而不是 纯粹的

我不确定你所说的关于可变列表的内容。F#列表是不可变的。您可以使用.Net CLR System.Collections.Generic.List,它是可变的。但是在谈论列表时,FSharpers指的是不可变的[],[1..3]或按名称:Microsoft.FSharp.Collections.FSharpList`1。

F#集合:

https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/fsharp-collection-types

不变的核心类型是列表、映射和集合。


3
不可变数组处于RFC阶段。https://github.com/fsharp/fslang-design/blob/main/RFCs/FS-1094-block.md - user1981
抱歉,我的意思是不可变列表。已更正。 - geeko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接