IO ()) -> Maybe a -> IO () doIf f x = case x of Just i -> f i Nothing -> r-6ren">
gpt4 book ai didi

haskell - "do this if Just x"有标准功能吗?

转载 作者:行者123 更新时间:2023-12-02 02:48:49 26 4
gpt4 key购买 nike

我有以下代码:

doIf :: (a -> IO ()) -> Maybe a -> IO ()
doIf f x = case x of
Just i -> f i
Nothing -> return ()

main = do
mapM_ (doIf print) [Just 3, Nothing, Just 4]

输出:
3
4

换句话说, Just值被打印,但 Nothing值(value)观不会导致任何行动。 (并且不要中断计算。)

Haskell 库中有这样的标准函数吗?另外,这可以更通用吗?我尝试替换 IO ()m b但后来 return ()不起作用。你一般怎么写 return ()对于任何单子(monad)? (如果可能的话..)甚至可以 Maybe在这里概括?

最后,我可以取消 doIf吗?完全发挥作用?我可以有一个运算符 <#> 来应用一个参数,除非 Nothing ?
print <#> Just 3
print <#> Nothing

会输出
3

但我不知道这是否可能。

最佳答案

看一下函数:

maybe :: b -> (a -> b) -> Maybe a -> b

你几乎写到 doIf除了固定的 return ()

关于haskell - "do this if Just x"有标准功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4435508/

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