ленивая версия 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
в то время как хвост все еще строит.