OberonCore
https://forum.oberoncore.ru/

реализация полиморфизма в хаскелле
https://forum.oberoncore.ru/viewtopic.php?f=72&t=3102
Страница 1 из 1

Автор:  Geniepro [ Четверг, 23 Декабрь, 2010 14:30 ]
Заголовок сообщения:  реализация полиморфизма в хаскелле

Выделено: viewtopic.php?p=56422#p56422
Galkov писал(а):
Нужны эти типы для придания каких-то полиморфных средств некому методу (объекту).

Есть разные взгляды на реализацию полиморфизма.
В хаскелле, например, есть классы типов, и функция сортировки списков, например, будет сортировать списки со значениями любых типов, для которых реализован интерфейс класса Ord, в котором определены операции сравнения больше-меньше.
И тут делегаты получаются ненужными -- в типе функции закодировано требование, что элементы сортируемого списка должны иметь операцию сравнения.
Просто и безопасно, со статической проверкой.

Автор:  Илья Ермаков [ Четверг, 23 Декабрь, 2010 14:33 ]
Заголовок сообщения:  Re: Аналог procedure of object в КП

Geniepro писал(а):
Есть разные взгляды на реализацию полиморфизма.
В хаскелле, например, есть классы типов, и функция сортировки списков, например, будет сортировать списки со значениями любых типов, для которых реализован интерфейс класса Ord, в котором определены операции сравнения больше-меньше.
И тут делегаты получаются ненужными -- в типе функции закодировано требование, что элементы сортируемого списка должны иметь операцию сравнения.
Просто и безопасно, со статической проверкой.


При таком подходе, кстати, и расширение-наследование вообще становится ненужным. Остаётся одна композиция: скомпоновали класс как реализацию нескольких интерфейсов. А интерфейсам расширяться тоже не нужно, просто вводим дополняющие интерфейсы. Как это был в COM, кстати.

Такой подход очень неплох для прикладного уровня, уже надязыкового (уровень хранимых объектов ИС и т.п.).

Ну а в языке лучше всё-таки маневрировать на уровне Оберона - все механизмы ООП по отдельности.

Автор:  Alexey Veselovsky [ Четверг, 23 Декабрь, 2010 15:10 ]
Заголовок сообщения:  Re: реализация полиморфизма в хаскелле

Geniepro писал(а):
Выделено: viewtopic.php?p=56422#p56422
Galkov писал(а):
Нужны эти типы для придания каких-то полиморфных средств некому методу (объекту).

Есть разные взгляды на реализацию полиморфизма.
В хаскелле, например, есть классы типов, и функция сортировки списков, например, будет сортировать списки со значениями любых типов, для которых реализован интерфейс класса Ord, в котором определены операции сравнения больше-меньше.
И тут делегаты получаются ненужными -- в типе функции закодировано требование, что элементы сортируемого списка должны иметь операцию сравнения.
Просто и безопасно, со статической проверкой.

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

Автор:  Alexey Veselovsky [ Четверг, 23 Декабрь, 2010 15:11 ]
Заголовок сообщения:  Re: реализация полиморфизма в хаскелле

Когда взваливают всё на библиотеку, при крайне простом и жестком языке, то в результате получаются решения где за деревьями леса не видно. Посмотрите на яву. Особенно на j2ee. Это то, куда может прийти оберон, если он станет хоть немного мейнстримом.

Автор:  Илья Ермаков [ Четверг, 23 Декабрь, 2010 22:23 ]
Заголовок сообщения:  Re: реализация полиморфизма в хаскелле

Смотрел.

Если пытаться делать также громоздко... то можно прийти.
А чтобы придумать, как сделать негромоздко... нужно много думать.

Простоту ведь надо удерживать на каждом слое, а не радостно перепихивать её с языка в библиотеку и делать также, как у всех.

Автор:  Info21 [ Пятница, 24 Декабрь, 2010 10:23 ]
Заголовок сообщения:  Re: реализация полиморфизма в хаскелле

Alexey Veselovsky писал(а):
Это то, куда может прийти оберон, если он станет хоть немного мейнстримом.
Придёт не Оберон, а мейнстрим. Впрочем, ИЕ уже сказал.

Автор:  Alexey Veselovsky [ Пятница, 24 Декабрь, 2010 10:29 ]
Заголовок сообщения:  Re: реализация полиморфизма в хаскелле

Всё равно это будет ассоциироваться с Обероном, равно как сейчас j2ee'шный ужас ассоциируется с явой, а ява с ужасом.

Единственный способ не допустить этого: "avoid success at all costs".

Автор:  Илья Ермаков [ Пятница, 24 Декабрь, 2010 11:44 ]
Заголовок сообщения:  Re: реализация полиморфизма в хаскелле

Добавлю, что именно подобные ужасы уже 20 лет являются "гробовщиками" идеи рынка компонент.
Стандарты (на интерфейсы, обмен, промежуточное ПО) типа CORBA или Java Business .. столь нев... необъятны, что никому не хочется стремиться на этот рынок компонентов.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/