Чтобы сделать первый шаблон также IO [String]
, вы должны сначала распаковать значение из списка, а затем упаковать его.Примерно так:
do c <- getContents
return [c]
В обычной монадической записи:
getContents >>= \c -> return [c]
В таком случае обычно лучше использовать функтор вместо монады,Тогда вы можете избежать использования return
:
fmap (:[]) getContents
(:[])
, имеющего то же значение, что и \x -> [x]
, он создает одноэлементный список.