J'ai le code suivant:Y at-il une fonction standard pour "faire ceci si juste 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]
qui sorties:
3
4
En d'autres termes, les valeurs Just
sont imprimées, mais Nothing
valeurs provoquent aucune action. (Et n'interrompez pas le calcul.)
Existe-t-il une fonction standard comme celle-ci dans les bibliothèques Haskell? Aussi, cela peut-il être rendu plus générique? J'ai essayé de remplacer IO()
avec m b
mais alors return()
ne fonctionne pas. Comment générez-vous généralement return()
pour une monade? (Si possible ..) Peut-on généraliser le Maybe
ici?
Enfin, puis-je supprimer complètement la fonction doIf
? Puis-je avoir un opérateur < #> qui applique un argument sauf si Nothing
?
print <#> Just 3
print <#> Nothing
génèrerait
3
Mais je ne sais pas si cela est possible.
En y repensant, je suppose que c'est une sorte de monade "avec". – Steve