Elevando una función de orden superior en Haskell
Estoy tratando de construir una función de tipo:
liftSumthing :: ((a -> m b) -> m b) -> (a -> t m b) -> t m b
dóndet
es un transformador de mónada. Específicamente, estoy interesado en hacer esto:
liftSumthingIO :: MonadIO m => ((a -> IO b) -> IO b) -> (a -> m b) -> m b
Jugueteé con algunas librerías de hechicería de Haskell y fue en vano. ¿Cómo lo hago bien, o tal vez hay una solución lista en algún lugar que no encontré?