Say I have a type of kind l :: * -> * -> *
, so I need to apply 2 types for example a
, and b
to get a simple type l a b
.
How can I map the type l :: * -> * -> *
into a new type m(l) :: * -> * -> *
where m(l) b a
means the same as l a b
for every a,b
? Here a,b
are not constants. Is it possible? Is it wrong to think of that?
Or without taking
l
as parameterEdit:
Moreover, you can give explicit kind signatures too