content: import Control.Concurrent
  import Data.List
  import System.Time
  
  -- Library: ansi-terminal
  import System.Console.ANSI
  
  number :: (Integral a) => a -> [String]
  number 0 =
    ["██████"
    ,"██  ██"
    ,"██  ██"
    ,"██  ██"
    ,"██████"]
  number 1 =
    ["    ██"
    ,"    ██"
    ,"    ██"
    ,"    ██"
    ,"    ██"]
  number 2 =
    ["██████"
    ,"    ██"
    ,"██████"
    ,"██    "
    ,"██████"]
  number 3 =
    ["██████"
    ,"    ██"
    ,"██████"
    ,"    ██"
    ,"██████"]
  number 4 =
    ["██  ██"
    ,"██  ██"
    ,"██████"
    ,"    ██"
    ,"    ██"]
  number 5 =
    ["██████"
    ,"██    "
    ,"██████"
    ,"    ██"
    ,"██████"]
  number 6 =
    ["██████"
    ,"██    "
    ,"██████"
    ,"██  ██"
    ,"██████"]
  number 7 =
    ["██████"
    ,"    ██"
    ,"    ██"
    ,"    ██"
    ,"    ██"]
  number 8 =
    ["██████"
    ,"██  ██"
    ,"██████"
    ,"██  ██"
    ,"██████"]
  number 9 =
    ["██████"
    ,"██  ██"
    ,"██████"
    ,"    ██"
    ,"██████"]
  
  colon :: [String]
  colon =
    ["      "
    ,"  ██  "
    ,"      "
    ,"  ██  "
    ,"      "]
  
  newline :: [String]
  newline =
    ["\n"
    ,"\n"
    ,"\n"
    ,"\n"
    ,"\n"]
  
  space :: [String]
  space =
    [" "
    ," "
    ," "
    ," "
    ," "]
  
  leadingZero :: (Integral a) => a -> [[String]]
  leadingZero num =
    let (tens, ones) = divMod num 10
    in [number tens, space, number ones]
  
  fancyTime :: CalendarTime -> String
  fancyTime time =
    let hour   = leadingZero $ ctHour time
        minute = leadingZero $ ctMin time
        second = leadingZero $ ctSec time
        nums   = hour ++ [colon] ++ minute ++ [colon] ++ second ++ [newline]
    in concat $ concat $ transpose nums
  
  main :: IO ()
  main = do
    time <- getClockTime >>= toCalendarTime
    putStr $ fancyTime time
    threadDelay 1000000
    setCursorColumn 0
    cursorUp 5
    main
  