Z>А чем должна отличаться реализация для нерекурсивных?
Инлайнится по-возможности, т.е. не создаваться на куче. Участвовать в распространении констант без всяких динамических проверок дискриминатора (т.е. типа объекта). Наиболее естественно — сделать как дотнетный value-type и агрессивно оптимизировать, как в Хаскеле.