let fmemo f = let m = Array.create 8 None in fun z -> let k = fdx z in match m.(k) with | Some r -> r | None -> let r = f z in m.(k) <- Some r ; r