#!/usr/bin/env stack
> --stack --install-ghc runghc --package markdown-unlit -- "-pgmL markdown-unlit"

> {-# LANGUAGE OverloadedStrings #-}

This is a simple countdown clock module.

> module Clock (countdown) where

> import Control.Concurrent  (threadDelay)
> import System.Console.ANSI (clearLine,
>                             clearFromCursorToScreenEnd,
>                             setCursorColumn,
>                             hideCursor,
>                             showCursor,
>                             saveCursor,
>                             restoreCursor)
> import System.Environment  (getArgs)
> import System.IO           (hFlush,
>                             stdout)
> import Timer               (secToTimestamp)
>
> -- >>> putStrLn "Hello world!"
> -- Hello world!
> --
> -- >>> putStrLn "Test complete!"
> -- Test complete!

> countdown :: IO()
> countdown = do
>     wait_seconds $ 25 * 60 + 1

> wait_seconds :: Int -> IO()
> wait_seconds 0 = do
>     putStrLn ""
> wait_seconds n = do
>     putStr ""
>     setCursorColumn 0
>     putStr $ secToTimestamp $ n - 1
>     hFlush stdout
>     delay 1
>     wait_seconds $ n - 1

> delay :: Int -> IO()
> delay n = del n
>
> del :: Int -> IO()
> del n = do
>     threadDelay $ n * 1000 * 1000
>
> no_del :: Int -> IO()
> no_del n = do
>     return ()
>
> main :: IO()
> main = do
>     countdown