Информация об изменениях

Сообщение Re[19]: Мнение: объектно-ориентированное программирование — от 23.09.2019 12:03

Изменено 23.09.2019 12:16 Разраб

Re[19]: Мнение: объектно-ориентированное программирование — катастрофа на трилли
Здравствуйте, AlexRK, Вы писали:

ARK>Здравствуйте, varenikAA, Вы писали:


ARK>>>Это не наследование, а алгебраический тип данных. Что совершенно другое — наследование открыто для расширения, алгебраические типы — закрыты.


AA>>Я про естественность реализации наследования для типизации данных — подтип четко связан с базовым(находится в одном модуле). В C# требуется вынести подтипы в отдельный модуль(файл) и уже теряется читабельность.


ARK>Идеологически алгебраический тип данных — это один тип, никаких подтипов в нем нет (хотя внутри можно реализовывать и классами, разумеется). Это "расширенный енум". И его конструкторы — это аналог членов енума, а не типов.

enum X {
 A
}
void Method(X x)
{
}
Method(10);


Спокойно скомпилится. Попробуй тоже самое с АТД и скажи что это одно и тоже.
Re[19]: Мнение: объектно-ориентированное программирование —
Здравствуйте, AlexRK, Вы писали:

ARK>Здравствуйте, varenikAA, Вы писали:


ARK>>>Это не наследование, а алгебраический тип данных. Что совершенно другое — наследование открыто для расширения, алгебраические типы — закрыты.


AA>>Я про естественность реализации наследования для типизации данных — подтип четко связан с базовым(находится в одном модуле). В C# требуется вынести подтипы в отдельный модуль(файл) и уже теряется читабельность.


ARK>Идеологически алгебраический тип данных — это один тип, никаких подтипов в нем нет (хотя внутри можно реализовывать и классами, разумеется). Это "расширенный енум". И его конструкторы — это аналог членов енума, а не типов.

enum X {
 A
}
void Method(X x)
{
}
Method((X)10);


Спокойно скомпилится. Попробуй тоже самое с АТД и скажи что это одно и тоже.