我有以下代码:有没有标准的功能“如果只是x做这个”?
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
值会导致无动作。 (并且不要中断计算。)
在Haskell库中是否有这样的标准函数?另外,这可以变得更通用吗?我试图用m b
替换IO()
,但return()
不起作用。你怎么一般写return()
任何单子? (如果可能的话)甚至可以在这里推广Maybe
?
最后,我可以完全废除doIf
函数吗?我可以让运营商<#>应用参数,除非Nothing
?
print <#> Just 3
print <#> Nothing
将输出
3
但我不知道这是可能的。
关于它的思考,我想这是不大不小的一元的“同”。 – Steve 2010-12-14 03:05:49