CachePureFunction is a simple tool for caching the results of expensive calculations. Any function call can be wrapped up; the first time it's evaluated a cache file will be created, and on subsequent calls the result will be read from disk instead of calculated. Calling the same function with different arguments is fine, separate cache files will be maintained.
CachePureFunction takes special care to detect when the source code changes, and it will reevaluate the function if needed. This doesn't just apply to the top level function, all of the functions which are involved in a calculation are tracked.