Je veux faire quelque chose en Haskell qui ressemble à ça :
main1 = do s <- getLine
if s == "foo" then putStr "You entered foo"
Évidemment, ce n'est pas légal puisqu'il n'y a pas else
. Une alternative à laquelle j'ai pensé :
nop :: IO ()
nop = sequence_ []
main2 = do s <- getLine
if s == "foo" then putStr "You entered foo" else nop
C'est un peu verbeux, mais je m'en contenterai si nécessaire. Je serais surpris s'il n'y avait pas une version intégrée de nop
mais
Alternativement :
doIf :: Bool -> IO () -> IO ()
doIf b m = if b then m else nop
main3 = do s <- getLine
doIf (s == "foo") (putStr "You entered foo")
C'est plus concis, mais la syntaxe n'est pas particulièrement agréable. Encore une fois, je ne serais pas surpris de trouver quelque chose d'intégré qui existe déjà.
Quelle est la meilleure façon de procéder ?