leniwa wersja mapM
Załóżmy, że otrzymuję dużą listę elementów podczas pracy z IO:
as <- getLargeList
Teraz staram się zastosowaćfn :: a -> IO b
naas
:
as <- getLargeList
bs <- mapM fn as
mapM
ma typmapM :: Monad m => (a -> m b) -> [a] -> m [b]
i tego właśnie potrzebuję pod względem dopasowania typów. Ale buduje cały łańcuch w pamięci, dopóki nie zwróci wyniku. Szukam analogumapM
, które będą działać leniwie, abym mógł użyć głowybs
podczas gdy ogon wciąż się buduje.