В Scala Set
является функцией:
trait Set[A] extends (A => Boolean)
Это делает невозможным наличие ковариантного неизменяемого Set
, потому что тип A
встречается в контравариантной позиции. Напротив, Seq
не определяется как функция. Уже есть некоторая информация по вопросу, почему наборы и последовательности разработаны таким образом:
Один ответ гласит, что причиной этого является математический фон. Но этот ответ не получил более подробного объяснения. Итак, каковы конкретные преимущества определения Set
как функции или каковы были бы недостатки, если бы он был реализован по-другому?