packages feed

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