1234567891011121314151617181920 |
- module Main where
- import System.Environment
- import Text.Read
- main :: IO ()
- main = do
- args <- getArgs
- case (foldMaybeNum [readMaybe s :: Maybe Double | s <- args]) of
- (Just n) -> roundMaybe n
- Nothing -> putStrLn "Those weren't numbers!"
- foldMaybeNum :: (Num a, Eq a) => [Maybe a] -> Maybe a
- foldMaybeNum x = foldr (\a b -> (+) <$> a <*> b) (Just 0) x
- -- Decide whether to print the double as an int, or a double
- roundMaybe :: Double -> IO ()
- roundMaybe n =
- if n == fromInteger (round n) then
- (putStrLn . show) (round n :: Integer)
- else (putStrLn . show) n
|