.NET Framework добавляет интерфейс ISet<T>
с выпуском 4.0. В том же выпуске F # добавляется как первоклассный язык. F # обеспечивает неизменный Set<'T>
класс.
Мне кажется логичным, что предоставленный неизменяемый набор будет реализовывать интерфейс ISet<T>
, но это не так. Кто-нибудь знает почему?
Я предполагаю, что они не хотели реализовывать интерфейс, предназначенный для изменчивости, но я не думаю, что это объяснение оправдывает себя. В конце концов, их класс Map<'Key, 'Value>
реализует IDictionary
, который является изменяемым. И в других местах в рамках классов, реализующих интерфейсы, есть примеры, которые являются только частично подходящими.
Моя другая мысль заключается в том, что ISet<T>
является новым, поэтому, возможно, они не смогли обойти это. Но это кажется немного худым.
Имеет ли тот факт, что ISet<T>
является родовым (v. IDictionary
, который не имеет) какое-либо отношение к этому?
Любые мысли по этому вопросу будут оценены.