Я хочу написать функцию с такой сигнатурой типа:
getTypeRep :: Typeable a => t a -> TypeRep
где TypeRep будет представлением типа для a, а не для t a. То есть, компилятор должен автоматически возвращать правильное представление типа на любых сайтах вызова [to getTypeRep], которые будут иметь конкретные типы для.
Чтобы добавить некоторый контекст, я хочу создать тип данных типа "Динамический тип", с твистом, что он будет помнить тип верхнего уровня, но не его параметр. Например, я хочу превратить MyClass a в Dynamic MyClass, и вышеуказанная функция будет использоваться для создания экземпляров Dynamic MyClass, которые хранят представление параметра типа a.