gpt4 book ai didi

.net - 为什么 F# Set 不实现 ISet

转载 作者:行者123 更新时间:2023-12-02 04:59:26 26 4
gpt4 key购买 nike

.NET Framework 正在添加 ISet<T>与 4.0 版本的接口(interface)。在同一版本中,F# 被添加为一流语言。 F# 提供了不可变的 Set<'T>类。

对我来说,提供的不可变集将实现 ISet<T> 似乎是合乎逻辑的。界面,但没有。有谁知道为什么吗?

我的猜测是他们不想实现一个可变的接口(interface),但我认为这个解释站不住脚。毕竟,他们的Map<'Key, 'Value>类实现IDictionary ,这是可变的。在类框架的其他地方也有一些例子实现了仅部分合适的接口(interface)。

我的另一个想法是ISet<T>是新的,所以也许他们没有抽出时间来处理它。但这似乎有点单薄。

事实上ISet<T>是通用的(v. IDictionary ,这不是)有什么关系吗?

对此事有任何想法,我们将不胜感激。

最佳答案

我不认为以前知道ISet。 (实际上,我回顾了旧电子邮件,发现其中提到了 BCL 计划——从 2008 年开始——但仅此而已。所以我认为它不在我们的关注范围内。)

也就是说,F# 努力在其 .NET 2.0 和 .NET 4.0 位之间实现源兼容,甚至将 .NET 4.0 实体向后移植到 FSharp.Core.dll 版本 2.0 中。例如,2.0 FSharp.Core 包含 System.Tuple、System.BigInteger、System.Threading.CancelationTokenSource(异步编程模型的一部分) )等,并且 ISet 可能会是反向移植的另一项工作(不过,我不清楚是否“有必要”移植它)。

我将提交一个问题来查看,尽管目前它可能没有实际意义。

关于.net - 为什么 F# Set 不实现 ISet<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2562909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com