/cache

F# nway set associative cache

cache

###n-level cache exploration

2 level cache, with pluggable cache vacate strategy, in the functional style.

For examples you can run interactively in F# interactive (FSI), see file script.fsx.

Here's an example you can try from FSI or http://tryfs.net/

#load "Cache.fs"
open Cache.Realistic

let square n =
  printfn "computing square of %d" n
  n*n
  
let memSquare = memoizeWithNWayCache square {nshelves=1;nbooks=10;policy=Policy.mru}
List.map memSquare [1..10]   // computes squares - see printfs
List.map memSquare [1..10]   // 2nd time hits cached - no printfs
memSquare 55                 // vacates oldest
memSquare 1                  // should recalculate