Un posible ejemplo de uso puede ser el uso de Conal TypeCompose para componer transformadores monad en estilo libre de puntos.
type MyT = StateT Foo :. MaybeT :. ContT Bar
(sólo como ejemplo, no tengo idea de lo que se va a hacer con esas Foos y bares ..)
En lugar de:
type MyT m = StateT Foo (MaybeT (ContT Bar m))
(esto tendría el mismo resultado aparte de newtype
-carpetas)
En la actualidad deberá duplicar el código de los combinadores para diferentes tipos, y esta extensión suprime la repetición y permite el uso una pieza de código para gobernarlos a todos.
¿Puede dar un ejemplo ? – solidsnack