[project @ 2001-05-18 14:18:34 by simonmar]
[ghc-hetmet.git] / ghc / tests / lib / should_run / memo001.hs
1 module Main(main) where
2
3 import Memo
4
5 testMemo = do
6    let keys = [ [1..n] | n <- [1..1000] ]
7        keys2 = [ [n,n-1..1] | n <- [1..1000] ]
8        mlength = memo length
9    putStr (show (map mlength (keys ++ keys ++ keys2 ++ keys2)))
10    putStr (show (mlength [1..100000]))
11
12 -- mlength will memoize itself over each element of 'keys', returning
13 -- the memoized result the second time around.  Then we move onto
14 -- keys2, and while we're doing this the first lot of memo table
15 -- entries can be purged.  Finally, we do a a large computation
16 -- (length [1..10000]) to allow time for the memo table to be fully
17 -- purged.
18
19 main = testMemo