je me surprends souvent à écrire du code qui ressemble à ceci:Nourrir une expression monadique en moins ou lorsque
import System.Directory (doesFileExist)
import Control.Monad (unless)
example = do
fileExists <- doesFileExist "wombat.txt"
unless fileExists $ putStrLn "Guess I should create the file, huh?"
Peut-être une meilleure façon est:
example2 =
doesFileExist "wombat.txt" >>=
(\b -> unless b $ putStrLn "Guess I should create the file, huh?")
Quelle est la meilleure approche ici?
Reliure à '' unless' avec (>> =) 'peut être fait avec une section,' 'quelque chose >> = (' unless' uneAction) '', 'si someAction' est courte. Si ce n'est pas court, je pense 'faire bool <- quelque chose; à moins que bool $ fasse quoi que ce soit de mieux. –
Vous pouvez utiliser 'mfilter', ce qui fonctionne encore mieux si vous intégrez votre calcul dans' MaybeT'. –