0
其他控制流,我有以下簡單的數字猜測程序清理,如果在Haskell
import System.Random
turn :: Int -> Int -> Int -> IO()
turn number attempt attempts =
do
if attempts == 0
then putStrLn "You lose"
else if attempt==number
then putStrLn "You got it!"
else if attempt==0
then guess number attempt attempts
else if attempt < number
then do
putStrLn "The number is greater"
guess number attempt attempts
else
do
putStrLn "The number is lesser"
guess number attempt attempts
guess :: Int -> Int -> Int -> IO()
guess number attempt attempts =
do
putStr "Try and guess number "
g <- getLine
let number' = read g :: Int
let check = (number'==number)
let attempts' = if check then attempts else attempts - 1
turn number number' attempts'
numberGuess :: IO()
numberGuess = do
let attempts = 5
number <- randomRIO (0, 10) :: IO Int
turn number 0 attempts
我如何收拾醜陋的if else或者什麼技術是在Haskell可用?
您可能還會看看'-XMultiWayIf'語法擴展。 https://downloads.haskell.org/~ghc/7.6.2/docs/html/users_guide/syntax-extns.html#multi-way-if – Schoon