Почитал я тут немного теорию, вот отсюда:
http://fprog.ru/2009/issue2/roman-dushkin-algebraic-data-types/
С теоретической точки зрения алгебраическим типом данных является размеченное объединение множеств (иначе называемое «дизъюнктным объединением»)7, под которым понимается видоизменённая классическая операция объединения — такая операция приписывает каждому элементу нового множества метку (или индекс), по которой можно понять, из какого конкретно множества элемент попал в объединение.
не совсем понятен один момент. Если в объединении множеств присутствуют элементы, которые являются элементами многих множеств одновременно, то они должны содержать метки всех множеств, членами которых они являются? Если да, то как их можно пометить в случае, если элемент является элементом бесконечного числа множеств? Где можно увидеть пример такого объединения представленный в коде какого-нибудь ЯП?