Why doesn't the F# Set implement ISet<T>?
- by Sean Devlin
The .NET Framework is adding an ISet<T> interface with the 4.0 release. In the same release, F# is being added as a first-class language. F# provides an immutable Set<'T> class.
It would seem logical to me that the immutable set provided would implement the ISet<T> interface, but it doesn't. Does anyone know why?
My guess is that they didn't want to implement an interface intended to be mutable, but I don't think this explanation holds up. After all, their Map<'Key, 'Value> class implements IDictionary, which is mutable. And there are examples elsewhere in the framework of classes implementing interfaces that are only partially appropriate.
My other thought is that ISet<T> is new, so maybe they didn't get around to it. But that seems kind of thin.
Does the fact that ISet<T> is generic (v. IDictionary, which is not) have anything to do with it?
Any thoughts on the matter would be appreciated.