Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
file :: FilePath -> IOMode -> ContT r IO Handle
file f mode = ContT $ withFile f mode -- withFile закроет файл в случае исключения
test :: [FilePath] -> ContT r IO [String]
test fs = do
-- никаких вложенных конструкций
hs <- mapM (\f -> file f ReadMode) fs
-- используем handles
ss <- liftIO $ mapM hGetContents hs
return ss
![[Newline in Haskell]](https://habrastorage.org/getpro/habr/comment_images/307/3c1/ef8/3073c1ef882c0b6eeb43133b80f486b3.jpg)
Монада ContT в картинках (Haskell)