Предположим, у меня есть структура:
data MyType
= CV Int
| CA MyType MyType
| CI
| CD
| CB
У меня есть функция, которая ожидает MyType, и я хотел бы соответствовать только следующему подмножеству грамматики:
data MyTypeNoCV
= CA MyType MyType
| CI
| CD
| CB
Я знаю, что это невозможно сделать в Хаскеле. Есть ли способ, которым я бы параметризовал структуру, чтобы как-то пометить узлы?
Может ли помочь Data.Void?