Are there combinators to write Haskell types in pointfree style?
I have a type synonym that is something like:
type FooT m a = StateT State (ReaderT (Params m) m)
I'd like to be able to write the right-hand-side of this in pointfree style in order to instantiate a typeclass that demands a parameter be a monad transformer. ie, there is some typeclass like:
class (MonadTrans t, Bar (t Monad)) => Baz t where -- where Bar is some other typeclass
...
And I would like to instantiate it with my stack of transformers. However, I need to provide it with something of kind (* -> *) -> * -> *, which means I would need to write a type-level function in order to pass my StateT State (ReaderT ...) transformer as a parameter to the typeclass.
I tried using type families but it seems like they need to be fully applied.