diff options
Diffstat (limited to 'testsuite/tests/lib/should_run/memo001.hs')
-rw-r--r-- | testsuite/tests/lib/should_run/memo001.hs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/testsuite/tests/lib/should_run/memo001.hs b/testsuite/tests/lib/should_run/memo001.hs new file mode 100644 index 0000000000..551bcd8cf4 --- /dev/null +++ b/testsuite/tests/lib/should_run/memo001.hs @@ -0,0 +1,19 @@ +module Main(main) where + +import Memo1 + +testMemo = do + let keys = [ [1..n] | n <- [1..1000] ] + keys2 = [ [n,n-1..1] | n <- [1..1000] ] + mlength = memo length + putStr (show (map mlength (keys ++ keys ++ keys2 ++ keys2))) + putStr (show (mlength [1..100000])) + +-- mlength will memoize itself over each element of 'keys', returning +-- the memoized result the second time around. Then we move onto +-- keys2, and while we're doing this the first lot of memo table +-- entries can be purged. Finally, we do a a large computation +-- (length [1..10000]) to allow time for the memo table to be fully +-- purged. + +main = testMemo |