Я пытаюсь глубже понять концепции Opa. В частности, меня интересует решение не предоставлять размеченные объединения, как в ML или Haskell (т. е. определять несколько конструкторов, которые оборачивают ноль или более значений), а оставаться с типами записей и типами их сумм. Это решение имеет для меня полный смысл (возможно, потому, что я больше увлекаюсь ООП, чем ФП), и кажется, что можно реализовать все, что можно было бы сделать с помощью размеченного объединения.
Однако можем ли мы тогда сказать, что язык по-прежнему поддерживает алгебраические типы данных? Это не практический вопрос, а вопрос терминологии.
Кстати, Википедия говорит, что да, возможно, это следует исправить.