Поднятие функции высшего порядка в Хаскеле

Я пытаюсь построить функцию типа:

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

Я возился с некоторыми волшебными библиотеками Хаскелла, но безрезультатно. Как я могу сделать это правильно, или, может быть, где-то есть готовое решение, которое я не нашел?

Ответы на вопрос(1)

Ваш ответ на вопрос