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