-- !!! Testing NumExts module Main(main) where import Numeric import Data.Char main :: IO () main = tst tst :: IO () tst = do test_doubleToFloat test_floatToDouble test_showHex test_showOct test_showBin ---- -- Test data: doubles :: [Double] doubles = [ -1.2 , 0, 0.1, 0.5, 1.0, 1234.45454, 1.6053e4, 1.64022e12, 6.894e-4, 6.34543455634582173, 5342413403.40540423255] ints :: [Int] ints = [ 0, 1, 255, 65513, 6029, 1024, 256, 201357245] integers :: [Integer] integers = [ 0, 1, 255, 65513, 6029, 1024, 256, 2343243543500233, 656194962055457832] --- test_doubleToFloat :: IO () test_doubleToFloat = do test_banner "doubleToFloat" putStrLn (show doubles) putStrLn (show $ map doubleToFloat doubles) doubleToFloat :: Double -> Float doubleToFloat = realToFrac floatToDouble :: Float -> Double floatToDouble = realToFrac test_floatToDouble :: IO () test_floatToDouble = do test_banner "doubleToFloat" putStrLn (show doubles) putStrLn (show $ map doubleToFloat doubles) putStrLn (show $ map (floatToDouble.doubleToFloat) doubles) test_showHex :: IO () test_showHex = do test_banner "showHex" putStrLn (show ints) putStrLn (showList' (map showHex ints)) putStrLn (show integers) putStrLn (showList' (map showHex integers)) test_showBin :: IO () test_showBin = do test_banner "showBin" putStrLn (show ints) putStrLn (showList' (map showBin ints)) putStrLn (show integers) putStrLn (showList' (map showBin integers)) showBin i = showIntAtBase 2 intToDigit i showList' :: [ShowS] -> String showList' [] = "[]" showList' (x:xs) = showChar '[' . x $ showl xs "" where showl [] = showChar ']' showl (x:xs) = showChar ',' . x . showl xs test_showOct :: IO () test_showOct = do test_banner "showOct" putStrLn (show ints) putStrLn (showList' (map showOct ints)) putStrLn (show integers) putStrLn (showList' (map showOct integers)) ---- test_banner :: String -> IO () test_banner tst = do putStrLn $ "--------------------------------" putStrLn $ "--Testing " ++ tst putStrLn $ "--------------------------------"