Ну вообще, за ADT и OOP еще в конце 80-ых писали, преимущественно William R. Cook, если мне память не изменяет. Надо дать Роме его почитать.
Если вкратце, то что ADT, что OOP - это механизмы абстракции данных. Первое - сделано нормально, на типах. Второе - как получилось, процедурно. В процедурных языках, где нет нормальной системы типов, как и ADT, это лучшее, что есть для абстракции данных. В хачкеле, благодаря нормальной системе типов, нинужно.
@ntsm А, ну и вся история целиком. Еще Cook сделал тогда вывод, который мне кажется немного спорным, но приведу уж как есть:
ADT - хорошо тайпчекаются и оптимизируются компилятором.
Классы и объекты - тайпчекаются херово, оптимизации при компиляции минимальны, зато их проще модифицировать.
У меня вопрос лишь к последнему утверждению.
@ntsm За Кука Рома в курсе, потому что в конце презенташки есть ссылка на один из постов Кука. Интересная тема, нужно поглубже покопать, я про эту дуальность раньше не знал.
@4da так-то да, если вдаваться в детали, то ООП = процедурная абстракция данных + разные виды сабтайпинга + классы которые не только типы, а еще и шаблоны.