是否可以将这两行变成一行:

main = do line <- getLine
    let result = words line

我的意思是类似于非一元代码

结果 = 单词 getLine

在我看来,这将提高可读性。

最佳答案

试试这个:result <- fmap words getLinefmap 接受一个类型为 a -> b 的函数,并将其转换为 f a -> f b ,用于任何 Functor 实例,其中应包括所有 Monad 实例。

由于模糊的历史原因,有一个名为 liftM 的等效函数,它特定于 Monad 。在某些情况下,您可能需要使用它,但对于像IO这样的标准monad,您可以坚持使用fmap

您还可以导入 Data.FunctorControl.Applicative 以获得一个很好的 fmap 运算符版本,因此您可以改为编写 words <$> getLine ,它通常看起来更漂亮。

关于haskell - 分配前处理单价,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9008219/

10-12 02:12