// How to memoize a function. Also tests "static" using namespace oadl; proc main() { "fib(36) = ", proc(n) { static factDict = nil; if (factDict == nil) { factDict = new Dict(0); } if (n < 2) { return n; } else if (factDict[n] != nil) { return factDict[n]; } else { var result; result = (proc)(n-1) + (proc)(n-2); factDict = factDict.reshape(factDict.length()+1); factDict[n] = result; return result; } } (36), "\n"; }