Допустим, мы имеемHaskell: Получить имя конструктора данных в виде строки
data D = X Int | Y Int Int | Z String
Я хотел бы иметь функцию getDConst
getDConst :: D -> String
что возвращает либо "X", "Y", или " Z ", в соответствии с конструктором данных, используемым для его ввода. Есть ли общий способ написать это без необходимости делать case
на каждом конструкторе данных? (Я в порядке с решениями, опираясь на Data.Typeable
или что-то подобное)
Если кто-то и получает ошибку с этим: Попробуйте добавить '{- # LANGUAGE DeriveDataTypeable # -}' в начало файла. Это необходимо в GHC, когда вы получаете данные и тип. – jPlatte