> -- Geniepro писал(а):
> Есть разные взгляды на реализацию полиморфизма.В хаскелле, например, есть классы типов, и функция сортировки списков, например, будет сортировать списки со значениями любых типов, для которых реализован интерфейс класса Ord, в котором определены операции сравнения больше-меньше.И тут делегаты получаются ненужными -- в типе функции закодировано требование, что элементы сортируемого списка должны иметь операцию сравнения.Просто и безопасно, со статической проверкой.
Кстати, эти все классы типов по сути нужны для дозволения перегрузки операций без отхода от строгой типизации. Скажем в С++ это не нужно. А шаблоны и так статически это дело проверят. Другое дело что появляются дыры/щели из за не строгой типизации. Т.е. operator< то для этого типа есть, но вот семантика его может оказаться совершенно не той, которую ожидает некая шаблонная функция. По сути именно для этого и нужны классы типов, чтобы можно было ручками явно указать что данная операция над этим множеством действительно имеет нужную нам семантику.