= Description
   A method that speeds methods up at the cost of memory (or disk space).
   
= Prerequisites
   Ruby 1.8.0 or later

= Installation
== Standard Installation
   rake test (optional)
   rake install

== Gems Installation
   rake test (optional)
   rake gem install

= Synopsis
   require "memoize"
   include Memoize

   # Inefficient fibonacci method
   def fib(n)
      return n if n < 2
      fib(n-1) + fib(n-2)
   end

   fib(100) # Slow

   memoize(:fib)
   fib(100) # Fast
   
   # Or store the cache to a file for later use
   memoize(:fib, "fib.cache")
   fib(100) # Fast

= Constants
Memoize::MEMOIZE_VERSION
   Returns the version of this package as a String.

= Methods
Memoize#memoize(method, file=nil)
   Takes a +method+ (symbol) and caches the results of +method+ in a hash
   table. If you call +method+ again with the same arguments, memoize gives
   you the value from the table instead of letting the method compute the
   value again.
   
   If +file+ is provided, the results are cached to that file.  Note that
   this uses Marshal internally.  Beware of changes in the Marshal format
   should you happen to upgrade.

   Returns the cache, which you can inspect or manipulate directly if you are
   so inclined.

= Acknowledgements
   Code borrowed from Nobu Nakada (ruby-talk:155159).
   Code borrowed from Ara Howard (ruby-talk:173428).
   Code borrowed from Andrew Johnson (http://tinyurl.com/8ymx8)
   Ideas taken from Brian Buckley and Sean O'Halpin.
   Tiny URL provided for Andrew Johnson because I could not find the ruby-talk
   reference.  The gateway may have been broken at the time.
   
== Known Issues
   None that I'm aware of.  Please report any problems on the Shards tracker
   or the forums at http://www.rubyforge.org/projects/shards.

== License
   Artistic 2.0
   
== Warranty
   This package is provided "as is" and without any express or
   implied warranties, including, without limitation, the implied
   warranties of merchantability and fitness for a particular purpose.

== Copyright
   (C) 2005-2009 Daniel J. Berger
   All Rights Reserved

= Author
   Daniel J. Berger
   djberg96 at gmail dot com
   IRC nick: imperator (freenode)
