Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
a -- [IO] -> btest :: String -> IO ()
test = runKleisli (Klesli purStrLn . arr (map toUpper) . Kleisli readFile)test :: String -> IO ()
test = (putStrLn =<<) . fmap (map toUpper) . readFile
main = test "Kleisli.hs"
test2 = fmap (putStrLn . map toUpper) . readFile
IO (IO ())test2 ничего не печатает, он возвращает монадное действие, которое уже печатает. Чтобы реально напечатать надо сделать так:do
action <- test2
action
join test2
Еще Одно Руководство по Монадам (часть 1: основы)