gpt4 book ai didi

Haskell:对单个值运行 IO 操作列表

转载 作者:行者123 更新时间:2023-12-02 05:56:59 25 4
gpt4 key购买 nike

如果我有一些函数是 string -> IO (),有没有一种整洁的方法可以将它们全部按顺序应用于单个值。

op1, op2, op3 :: String -> IO ()

main :: IO ()
main = do
let str = "test"
op1 str
op2 str
op3 str

不必每次都写出 str?

最佳答案

只需使用一个映射和函数应用的部分应用($):

mapM ($ str) [op1,op2,op3]

不想要结果?很好。

mapM_ ($ str) [op1,op2,op3]

或者使用Data.Foldable:

for_ [op1,op2,op3] ($ str)

编辑:

扩展关于 for_ 替代 forM_ 的评论。

mapM/mapM_ 也是如此。这些是历史的产物——这些操作是专门针对 Monad 的,可以说应该删除。 Applicative 的替代方案是 traversetraverse_

关于Haskell:对单个值运行 IO 操作列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49788203/

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