let imemo f = let m = Array.create 8 None in fun i -> let k = idx i in match m.(k) with | Some r -> r | None -> let r = f i in m.(k) <- Some r ; r