Скажем, мы имеем
data D = X Int | Y Int Int | Z String
Я хочу иметь функцию getDConst
getDConst :: D -> String
который возвращает либо "X", "Y", либо "Z", в соответствии с конструктором данных, используемым для его ввода. Есть ли общий способ написать это, не делая case
для каждого конструктора данных? (Я в порядке с решениями, основанными на Data.Typeable
или чем-то подобном)