Преобразование типов

Рейтинг: 1Ответов: 1Опубликовано: 18.10.2014

У меня функция путём нехитрых манипуляций получает строку типа IO [String], а мне нужен String. Например, вывести на экран.
Как производить преобразование типов?

Ответы

▲ 5Принят

Пример — программа, которая конкатенирует свои аргументы:

import System.Environment

main = do
    args <- getArgs
    putStrLn $ concat args

Тип getArgs :: IO [String].

Напишем функцию f:

f :: Monad m => m [[a]] -> m [a]
f m = m >>= (\ xs -> return $ concat xs)

Развернем do нотацию в оригинальном примере:

main :: IO ()
main = (f getArgs) >>= putStrLn