Я бы хотел, чтобы animal стал вариантом с четырьмя конструкторами: Cat |Собака |Олень |Lion.Есть ли способ сделать это?
Вы не можете сделать это напрямую.Это значит, что Cat
имеет тип pet
, но также и тип wild_animal
.Это невозможно при использовании обычных вариантов, которые всегда имеют один тип.Однако это возможно с полиморфными вариантами, как описывает другой ответ.
Другое, более распространенное решение (но оно зависит от того, чего вы пытаетесь достичь), состоит в определении второго уровня вариантов:
type pet = Cat | Dog
type wild_animal = Deer | Lion
type animal = Pet of pet | Wild_animal of wild_animal
Таким образом, Cat
имеет тип pet
, но Pet Cat
имеет тип animal
.