debug-time-0.1.0.0: test/Test.hs
module Main where
import Debug.Time
-- | Naive implementation
fibs :: [Int]
fibs = map (fibAt . maybeTimer) [1..]
where maybeTimer 10 = startTimer "10-30" 10
maybeTimer 30 = traceTimer "10-30" 30
maybeTimer 20 = startTimer "20-40" 20
maybeTimer 40 = traceTimer "20-40" 40
maybeTimer n = n
fibAt :: Int -> Int
fibAt 1 = 1
fibAt 2 = 1
fibAt n = fibAt (n - 1) + fibAt (n - 2)
main :: IO ()
main = do
initializeTimers
putStrLn "Calculating the first 40 fibonacci numbers while tracing the time elapsed between"
putStrLn "the computations 10-30 and 20-40"
mapM_ print (take 40 fibs)