Основываясь на недавнем обмене , меня убедили использовать Template Haskell для генерации некоторого кода, чтобы гарантировать безопасность типов во время компиляции.
Мне нужно проанализировать имена и типы полей записи. Я понимаю, что могу получить имена полей , используя constrFields. toConstr :: Data a => a -> [Строка]
. Но мне нужно больше, чем имена полей, мне нужно знать их тип. Например, мне нужно знать имена полей типа Bool
.
Как создать функцию f :: a -> [(String, xx)]
, где a
- это запись, String
- это поле имя и xx
- это тип поля?