Здравствуйте, vdimas, Вы писали:
Z>>А чем должна отличаться реализация для нерекурсивных?
V>Инлайнится по-возможности, т.е. не создаваться на куче. Участвовать в распространении констант без всяких динамических проверок дискриминатора (т.е. типа объекта). Наиболее естественно — сделать как дотнетный value-type и агрессивно оптимизировать, как в Хаскеле.
Зачем говорить о том в чем плохо разбираешься?
Создай тестовый проект на Шарпе и попробуй сэмулировать свое решение. Тебе ждет огромное разочарование.
Потому во всех языках дотнета (что поддерживают АлгТД) АлгТД сделаны через классы.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.