.NET Framework está agregando una interfaz ISet<T>
con la versión 4.0. En el mismo lanzamiento, F # se está agregando como un lenguaje de primera clase. F # proporciona una clase inmutable Set<'T>
.¿Por qué el conjunto F # no implementa el dispositivo SET <T>?
Me parece lógico que el conjunto inmutable proporcionado implemente la interfaz ISet<T>
, pero no es así. ¿Alguien sabe por qué?
Supongo que no querían implementar una interfaz destinada a ser mutable, pero no creo que esta explicación se mantenga. Después de todo, su clase Map<'Key, 'Value>
implementa IDictionary
, que es mutable. Y hay ejemplos en otras partes en el marco de clases que implementan interfaces que son solo parcialmente apropiadas.
Mi otro pensamiento es que ISet<T>
es nuevo, por lo que tal vez no lo consiguieron. Pero eso parece un poco delgado.
¿El hecho de que ISet<T>
es genérico (v. IDictionary
, que no) tiene algo que ver con eso?
Se agradecerá cualquier idea al respecto.
En el propio marco .NET, 'ReadOnlyCollection' implementa 'ICollection ', que es una interfaz mutable. –
Steven
@Steven A la derecha, ese es un ejemplo de una clase de infraestructura que implementa una interfaz que no es totalmente apropiada. –