packages feed

prefix-units-0.3.0.1: example.hs

module Main where

import Data.Prefix.Units

showValueAs :: Double -> FormatMode -> IO ()
showValueAs val mode = do
  putStrLn $ "Formatting " ++ show val ++ " in mode " ++ show mode ++
             " is: " ++ showValue mode val

main = do
  putStr $ "Enter a value (with optional units; case sensitive!): "
  in_str <- getLine
  case parseValue ParseExact in_str of
    Left err -> putStrLn $ "Error parsing the value: " ++ err
    Right v -> do
         putStrLn $ "You entered " ++ show v
         mapM_ (showValueAs v) [ FormatSiAll
                               , FormatSiSupraunitary
                               , FormatSiKMGT
                               , FormatBinary
                               , FormatUnscaled
                               ]
         mapM_ (showValueAs v . FormatFixed) [minBound..maxBound]