[project @ 1999-08-04 10:07:50 by simonmar]
[ghc-hetmet.git] / ghc / tests / lib / should_run / memo002.hs
1 module Main
2 where
3
4 import Memo
5 import System(getArgs)
6
7 main = do (arg:_) <- getArgs
8           mapM_ printTriple [ (i,fib i,mfib i) | i <- [10..read arg] ]
9   where printTriple (i,fi,mfi) = do print i
10                                     print fi
11                                     print mfi
12                                     putStrLn ""
13
14 mfib :: Integer -> Integer
15 mfib = memo ufib
16
17 ufib :: Integer -> Integer
18 ufib 0 = 1
19 ufib 1 = 1
20 ufib n = mfib (n-1) + mfib (n-2)
21
22 fib :: Integer -> Integer
23 fib 0 = 1
24 fib 1 = 1
25 fib n = fib (n-1) + fib (n-2)