import Control.Concurrent
import Data.Time.Clock.POSIX
import System.Environment
main :: IO ()
main = do
n <- getArgs >>= return . read . head
t1 <- getPOSIXTime
work n
t2 <- getPOSIXTime
putStrLn $ show $ t2 - t1
putStrLn $ show $ (fromIntegral n :: Double)
/ (fromRational . toRational $ t2 - t1)
work :: Integer -> IO ()
work n = do
forkIO $ putStrLn $ seq (fact n) "Done"
putStrLn $ seq (fact n) "Done"
fact :: Integer -> Integer
fact 1 = 1
fact n = n * fact (n - 1)