packages feed

parconc-examples-0.1: reminders2.hs

import Control.Concurrent
import Text.Printf
import Control.Monad

-- <<main
main = loop
 where
  loop = do
    s <- getLine
    if s == "exit"
       then return ()
       else do forkIO $ setReminder s
               loop
-- >>

setReminder :: String -> IO ()
setReminder s  = do
  let t = read s :: Int
  printf "Ok, I'll remind you in %d seconds\n" t
  threadDelay (10^6 * t)                   -- <3>
  printf "%d seconds is up! BING!\BEL\n" t -- <4>