0
我試圖編寫一個函數,將不斷循環檢查,如果一個隨機生成的int小於5,如果它小於5那麼「e」被附加到一個字符串,一旦「 eee「,然後退出循環。避免可變狀態更新字符串
這Haskell代碼打印如果1之間的隨機值 - 10小於5:
useInt :: Int -> Int
useInt x = x
test :: IO()
test = do
let l = "eee";
int <- randomRIO (1, 10) :: IO Int
if(int < 5) then
putStrLn "less"
else
putStrLn "greater"
test
但是我不能確定如何修改字符串而不引入可變狀態。
爲了實現這一目標使用僞Haskell代碼可以使用:
var mutableString = "" :
useInt :: Int -> Int
useInt x = x
test :: IO()
test = do
let l = "eee";
int <- randomRIO (1, 10) :: IO Int
while(mutableString != "eee"){
if(mutableString == "eee")
break out of loop
else
if(int < 5) then
mutableString = mutableString + "e"
putStrLn "less"
else
putStrLn "greater"
}
test
任何指針來翻譯上面的僞代碼,以有效的Haskell?