non capisco perché questo codice esegue il ciclo solo una volta e poi esce? in Ghci posso rispondere solo al primo ciclo quindi sembra che la variabile cont sia impostata su false e non ho il prompt per rispondere.Ciclo con statoT: perché questo ciclo non fa il ciclo
Il risultato è:
*Main> testLoop1 td10
test
Do you want to continue? (y/N)
y
we continue
test
Do you want to continue? (y/N)
We stop
codice:
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()
Grazie esattamente quello che volevo e altro ancora. Ero sul percorso di ricerca quando ho appena cambiato il codice e aggiunto una stampa che mostra il '\ n'. Grazie per il suggerimento su liftIO $ testLoop1 td -> loop1. Questo è stato uno dei miei test precedenti e mi chiedevo quale di quei due codici sostituire. E buon punto con EvalState. Questa è stata la mia prima incursione con statetransformer e IO. –