Одним из возможных примеров использования может быть использование conal TypeCompose для составления монадных преобразователей в стиле без точек.
type MyT = StateT Foo :. MaybeT :. ContT Bar
(в качестве примера, я понятия не имею, что делать с этими барами и барами ...)
Вместо:
type MyT m = StateT Foo (MaybeT (ContT Bar m))
(это будет иметь тот же результат, кроме newtype
-wrappers)
В настоящее время вам нужно будет продублировать код комбинаторов для различных типов, и это расширение отменяет повторение и позволяет использовать один фрагмент кода, чтобы управлять ими всеми.