Spesso mi ritrovo a scrivere il codice che assomiglia a questo:Feeding un'espressione monadica in meno o quando
import System.Directory (doesFileExist)
import Control.Monad (unless)
example = do
fileExists <- doesFileExist "wombat.txt"
unless fileExists $ putStrLn "Guess I should create the file, huh?"
Forse un modo migliore è:
example2 =
doesFileExist "wombat.txt" >>=
(\b -> unless b $ putStrLn "Guess I should create the file, huh?")
Qual è l'approccio migliore qui?
Binding a '' unless' con (>> =) 'può essere fatto con una sezione,' 'qualcosa >> = (' someAction unless') '', 'se someAction' è breve. Se non è breve, penso 'do bool <- qualcosa; a meno che bool $ faccia qualunque cosa sia meglio. –
Puoi usare 'mfilter', che funziona ancora meglio se incorpori il tuo calcolo in' MaybeT'. –