Given the following type family:
type family C a b :: Constraint
This has type:
C :: * -> * -> Constraint
Whilst C Int
is invalid (one can not partially apply a type family).
We can write the following:
class (C a b) => C' a b
instance (C a b) => C' a b
And now I can write:
C' Int
Which is of type:
C' Int :: * -> Constraint.
My question is, lets say I've got
type family T a b
i.e. of type:
T :: * -> * -> *
Is there a way I can define T'
such that I can write:
T' Int
With type:
T' :: * -> *
Much like I've done with the constraint type?