मैं अक्सर अपने आप को कोड है कि इस तरह दिखता है लिख पाते हैं:में एक monadic अभिव्यक्ति दूध पिलाने की जब तक या जब
import System.Directory (doesFileExist)
import Control.Monad (unless)
example = do
fileExists <- doesFileExist "wombat.txt"
unless fileExists $ putStrLn "Guess I should create the file, huh?"
शायद एक बेहतर तरीका है:
example2 =
doesFileExist "wombat.txt" >>=
(\b -> unless b $ putStrLn "Guess I should create the file, huh?")
क्या सबसे अच्छा तरीका यहाँ है?
साथ 'unless' लिए बाइंडिंग' (>> =) 'एक वर्ग के साथ किया जा सकता है,' 'कुछ >> = (' unless' someAction) '', अगर 'someAction' कम है। यदि यह छोटा नहीं है, तो मुझे लगता है कि 'बूल करें <- कुछ; जब तक कि बूल $ जो कुछ भी बेहतर न हो। –
आप 'mfilter' का उपयोग कर सकते हैं, जो कि' हो सकता है 'में आपकी गणना को एम्बेड करते समय भी बेहतर काम करता है। –