idris-0.9.18: test/effects004/effects004.idr
import Effects
import Effect.StdIO
import Effect.State
counter : Eff () [STATE Int, STDIO]
counter = do putStrLn $ "Counter at " ++ show !get
x <- getStr
if trim x /= "" then pure ()
else do put (!get + 1)
counter
startCounter : Eff () [STDIO]
startCounter = do putStrLn "Off we go!"
new (STATE Int) 0 counter
putStrLn "Finished!"
main : IO ()
main = run startCounter