ленивая версия mapM

Предположим, я получаю большой список элементов при работе с IO:

as <- getLargeList

Сейчас я пытаюсь подать заявкуfn :: a -> IO b наas:

as <- getLargeList
bs <- mapM fn as

mapM имеет типmapM :: Monad m => (a -> m b) -> [a] -> m [b]и это то, что мне нужно с точки зрения соответствия типов. Но он строит всю цепочку в памяти, пока не вернет результат. Я ищу аналогmapM, который будет работать лениво, так что я могу использовать главуbs в то время как хвост все еще строит.

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

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