Как получить параметры типа из SYB dataTypeOf

Учитывая тип данных

data Foo =
  Foo1 { foo1Name :: String} 
  | Foo2 { foo2Name :: String, foo2Age :: Integer }

, я хотел бы иметь возможность извлечь Data.Data.DataTypeS из Foo1 и Foo2 s.

Я пробовал

datatype = (undefined :: Foo)
constrs = dataTypeConstrs datatype
foo1 = fromConstrs (head constrs) :: Foo
foo1Fields = gmapQ dataTypeOf foo1

, но foo1Fields просто скажет, что foo1Name - это Prelude. [] , а не используемый параметр типа.

Можно ли извлечь параметры типа с помощью SYB, или мне следует использовать другую библиотеку отражения?

1
задан finnsson 24 October 2010 в 09:24
поделиться