Last Modified
  2012-02-08 11:20:54 +0000
Requires

## Description

Memoization is an optimization technique used primarily to speed up programs by having function calls avoid repeating the calculation of results for previously-processed inputs.

When you "memoize" a method/function using Memoizable its results are cached so that later calls return results from the cache instead of recalculating them.

    class T
      include Memoizable

      def initialize(a)
        @a = a
      end

      def a
        "#{@a ^ 3 + 4}"
      end

      memoize :a
    end

    t = T.new(10)
    (t.a.__id__ == t.a.__id__)  #=> true

This method can also be used at the instance level to cache singleton (qua class) methods by including it in the singleton class.