このコードがループして終了する理由を理解できません。 Ghciの 私は最初のループにしか答えることができませんが、変数contがfalseに設定されているように見え、答えが表示されません。StateTを使用したループ:なぜこのループはループしないのですか
結果は次のとおりです。
*Main> testLoop1 td10
test
Do you want to continue? (y/N)
y
we continue
test
Do you want to continue? (y/N)
We stop
コード:'y'
自体、:
type TDeckSTIO = StateT TableDecks IO
continue = do
putStrLn "Do you want to continue? (y/N)"
c <- getChar
return $ c == 'y'
loop1 :: TDeckSTIO()
loop1 = do
liftIO $ putStrLn "test"
cont<- liftIO continue
if cont
then do
liftIO $ putStrLn "we continue"
liftIO $ testLoop1 td
else liftIO $ putStrLn "We stop"
testLoop1 td = runStateT (loop1) td >> return()
おかげさまで私が望んでいたこと以上のことをありがとう。私はコードを変更したばかりのパスを見つけ出し、 '\ n'を表示するプリントを追加しました。 liftIO $ testLoop1 td - > loop1のヒントをありがとう。それは私の以前のテストの1つでした。私はその2つのコードのどれを置き換えるべきか疑問に思っていました。 evalStateとの良い点。それがstatetransformerとIOを使った私の最初の侵入でした。 –