मैं हास्केल में कुछ ऐसा करना चाहता हूं जो ऐसा दिखता है:
main1 = do s <- getLine
if s == "foo" then putStr "You entered foo"
जाहिर है कि यह कानूनी नहीं है क्योंकि वहाँ कोई नहीं है else
। एक विकल्प जो मैंने सोचा है:
nop :: IO ()
nop = sequence_ []
main2 = do s <- getLine
if s == "foo" then putStr "You entered foo" else nop
यह थोड़ी सी क्रिया है, लेकिन यदि आवश्यक हो तो मैं इसके लिए समझौता करूंगा। मुझे आश्चर्य होगा कि अगर कोई अंतर्निहित संस्करण नहीं था nop
, हालांकि।
वैकल्पिक रूप से:
doIf :: Bool -> IO () -> IO ()
doIf b m = if b then m else nop
main3 = do s <- getLine
doIf (s == "foo") (putStr "You entered foo")
यह अधिक संक्षिप्त है, लेकिन वाक्यविन्यास विशेष रूप से अच्छा नहीं है। फिर से, मुझे ऐसा कुछ आश्चर्यचकित नहीं होगा, जो पहले से मौजूद हो।
ऐसा करने का पसंदीदा तरीका क्या है?