У меня немного другая задача даже... Я пытаюсь сделать deriving в Functor обощенный до произвольных стрелок для Чёрч энкодинг типов с произвольными стрелками:
class Arrow a=>AFunctor a f where amap :: a b c -> a (f b) (f c)
Ну и парочку типов для этого например:
newtype ArrPair a b c = ArrPair (forall pair.a (a b (a c pair)) pair)
newtype ArrId a b = ArrId (forall id.a (a b id) id)
Ну в теории да,но как определить какие-то примитивные типы для построения всего - тоже загадка... Т.е. как понять что они позволят воплотить практически что угодно,или что угодно...
хочу по меркам haskell странного. чтото типа системы плагинов: мапу название -> тип, в рантайме. типы плагины все определены статически можно конечно написать в отдельном модуле руками функцию, но наверно есть способ лучше?
не то, у меня все такие типы будут иметь один и тот же тайп класс, нужно просто получать его по строчке можно просто поддерживать такую мапу руками, но это как то несистемно