Я пытаюсь построить функцию типа:
liftSumthing :: ((a -> m b) -> m b) -> (a -> t m b) -> t m b
где t
является монадным трансформатором. В частности, я заинтересован в этом:
liftSumthingIO :: MonadIO m => ((a -> IO b) -> IO b) -> (a -> m b) -> m b
Я возился с некоторыми Haskell wizardry libs, но безрезультатно. Как это получить? или, может быть, есть готовое решение где-то, чего я не нашел?