#!/usr/bin/env stack
>
Unified interface for displaying the remaining time on the screen.
> module ConsoleDisplay (display) where
>
> import Control.Concurrent (threadDelay)
> import System.Console.ANSI (clearLine,
> saveCursor,
> restoreCursor)
>
> display :: String -> IO ()
> display :: String -> IO ()
display String
s = String -> IO ()
putStr (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"\r" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
s
>
> waitASecond :: IO()
> waitASecond :: IO ()
waitASecond = Int -> IO ()
threadDelay (Int -> IO ()) -> Int -> IO ()
forall a b. (a -> b) -> a -> b
$ Int
10Int -> Integer -> Int
forall a b. (Num a, Integral b) => a -> b -> a
^Integer
6
> main :: IO ()
> main :: IO ()
main = do
> String -> IO ()
display String
"00:01" IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> IO ()
waitASecond IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
display String
"00:00"