File: memo001.hs

package info (click to toggle)
ghc 9.0.2-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 177,780 kB
  • sloc: haskell: 494,441; ansic: 70,262; javascript: 9,423; sh: 8,537; python: 2,646; asm: 1,725; makefile: 1,333; xml: 196; cpp: 167; perl: 143; ruby: 84; lisp: 7
file content (19 lines) | stat: -rw-r--r-- 634 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 large computation
-- (length [1..10000]) to allow time for the memo table to be fully
-- purged.

main = testMemo