Я пытаюсь бесконечно повторять действие ввода-вывода, но передаю результат одного выполнения другому. Что-то вроде этого:
-- poorly named
iterateM :: Monad m => (a -> m a) -> a -> m b
iterateM f a = f a >>= iterateM f
Hoogle, похоже, мне не помог, но я вижу множество функций, которые выглядят заманчиво близкими к тому, что я хочу, но ни одна из них, похоже, не соответствует тому, что мне нужно.