Haskell - получить TypeRep из конкретного экземпляра типа

Я хочу написать функцию с такой сигнатурой типа:

getTypeRep :: Typeable a => t a -> TypeRep

где TypeRep будет представлением типа для a , а не для ta . То есть компилятор должен автоматически возвращать правильное представление типа на всех сайтах вызовов [to getTypeRep ], который будет иметь конкретные типы для a .

Чтобы добавить некоторый контекст, я хочу создать тип данных «Динамический тип» с той особенностью, что он запоминает тип верхнего уровня, но не его параметр. Например, я хочу превратить MyClass a в Dynamic MyClass , и указанная выше функция будет использоваться для создания экземпляров Dynamic MyClass , в которых хранится представление параметр типа a .

11
задан Don Stewart 8 May 2011 в 01:11
поделиться