The sun's surface rotates with a period of 25 to 35 days, depending on latitude, so I would guess not.
(define f (memoize (lambda args ...)))
so I don't see what macros gain you there. (Well, they save you from having to write lambda.) Especially if you're using a language with 'nicer' syntax, like Haskell: withFile $ \h -> do
...
fib = memoize $ \n -> if n <= 1
then n
else fib (n - 1) + fib (n - 2)
Example (2) seems interesting though. And I'd like to see some examples of (3) that couldn't be so easily overcome. (Granted, my example is rather fake, since I don't know how you'd implement memoize for general types that only have a comparison function on them, without resorting to using some IO operation.)