gpt4 book ai didi

haskell - 赋值前处理monad值

转载 作者:行者123 更新时间:2023-12-04 10:20:29 25 4
gpt4 key购买 nike

是否可以将这两行设为一行:

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 的运算符(operator)版本, 所以你可以写 words <$> getLine相反,它通常看起来更漂亮。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com