【发布时间】:2021-03-23 13:09:35
【问题描述】:
我正在尝试在 F# 中实现 OrderedSet(您可以在其中按插入顺序获取项目的集合)。这是我第一次天真的尝试(我仍然必须处理传递给构造函数的 IEnumerable 中可能存在的重复项。比较器也仍然丢失)。
不过,我认为上述任何一项都不重要。我一直在尝试解决这个问题,据我从研究中收集到的信息,问题似乎与缩进或某处缺少括号有关。
如果我注释掉我实现 ISet 的尝试,则没有问题,这使我相信该部分具体有问题。代码如下:
open System
open System.Collections.Generic;
type public OrderedSet<'T> public (collection : IEnumerable<'T> option) as this =
let mutable _set = SortedSet<int * 'T>()
do
if Option.isSome(collection) then
let mapper (idx: int) (elem: 'T) = (idx, elem)
do _set <- SortedSet<int * 'T>(Seq.mapi mapper collection.Value)
interface ISet<'T> with
member this.Count
with get() = this._set.Count
【问题讨论】:
标签: f#