Попробуйте это: result <- fmap words getLine
fmap
берет функцию с типом типа a -> b
и превращает ее в f a -> f b
для всего, что является экземпляром Functor
, который должен включать все Monad
экземпляры.
Существует эквивалентная функция liftM
, специфичная для Monad
по темным историческим причинам. Возможно, вам придется использовать это вместо этого в некоторых случаях, но для стандартных монад, таких как IO
, вы можете придерживаться fmap
.
Вы также можете импортировать Data.Functor
или Control.Applicative
, чтобы получить красивую операторскую версию fmap
, так что вместо этого вы могли бы написать words <$> getLine
, что часто выглядит красивее.