是否可以将这两行变成一行:
main = do line <- getLine
let result = words line
我的意思是类似于非一元代码
结果 = 单词 getLine
在我看来,这将提高可读性。
最佳答案
试试这个:result <- fmap words getLine
fmap
接受一个类型为 a -> b
的函数,并将其转换为 f a -> f b
,用于任何 Functor
实例,其中应包括所有 Monad
实例。
由于模糊的历史原因,有一个名为 liftM
的等效函数,它特定于 Monad
。在某些情况下,您可能需要使用它,但对于像IO
这样的标准monad,您可以坚持使用fmap
。
您还可以导入 Data.Functor
或 Control.Applicative
以获得一个很好的 fmap
运算符版本,因此您可以改为编写 words <$> getLine
,它通常看起来更漂亮。
关于haskell - 分配前处理单价,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9008219/