No entiendo por qué este código se activa solo una vez y luego sale? en Ghci puedo responder solo al primer ciclo, entonces parece que la variable cont se configura como falsa y no tengo el mensaje para responder.Bucle con StateT: ¿Por qué este bucle no se repite?
El resultado es:
*Main> testLoop1 td10
test
Do you want to continue? (y/N)
y
we continue
test
Do you want to continue? (y/N)
We stop
código:
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()
Gracias exactamente lo que quería y más. Estaba en el camino encontrando cuando acabo de cambiar el código y agregué una impresión que muestra el '\ n'. Gracias por la sugerencia de liftIO $ testLoop1 td -> loop1. Esa fue una de mis pruebas previas y me preguntaba cuál de esos dos códigos reemplazar. Y buen punto con evalState. Esa fue mi primera incursión con statetransformer y IO. –