module myfib
export fib
fib(n=1) = n <= 1 ? 1 : fib(n-1) + fib(n-2)
end
using myfib
function gemoize(f)
function mem(x)
if !haskey(cache, x)
cache[x] = f(x)
end
println (cache)
return cache[x]
end
cache = Dict()
return mem
end
fib = gemoize(fib)
@time fib(37)
Starting kernel event loops. {
Warning: imported binding for fib overwritten in module Main
37=>39088169} elapsed time: 0.382536409 seconds (5981088 bytes allocated)
39088169
@time fib(37)
{37=>39088169} elapsed time: 0.000122689 seconds (10556 bytes allocated)
39088169