Я полагаю, вам нужно будет внедрить IComparer<T>
, чтобы сработали определенные понимания (например, Set.of_list
). ( Не IComparable<T>
, который имеет тенденцию менее широко использоваться - хотя я могу ошибаться.)
В этом сообщении в блоге в общих чертах объясняется, как реализовать интерфейсы в F #. Он также включает в себя конкретный пример типа, реализующего IComparer<T>
, что на самом деле не так просто, как вы можете надеяться.
type Comp() =
interface IComparer with
member x.Compare(a, b) = 0
member x.Compare(a, b) = (x :> IComparer).Compare(a,b)
Дайте мне знать, если это работает для вас. У меня есть некоторые подозрения, что вам может понадобиться реализовать IEqualityComparer<T>
вместо этого, поскольку именно на этом основаны методы расширения набора LINQ, насколько я знаю. (Это действительно путает со всеми этими интерфейсами для сравнения в BCL!)