You’ve probably seen this Python 101 thing before:
@memoized
def fib(n):
if n <= 1:
return n
return fib(n - 1) + fib(n - 2)
Leaving aside the absurdity of computing Fibonacci numbers recursively, it’s a common first introduction to Python decorators and higher-order functions. fib
is just a function, and memoized
takes that function and returns a new function (or something with a __call__
method) that, you know, memoizes the result.
Python’s decorators give us a nice notation for writing this, but we could write the same thing in any dynamic language with first-class functions. Like JavaScript: