Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to mcvs-0-96:||(view) (annotate)|
* memoize.lisp (memoize-expander): Use ordinary hash for memoizing monadic functions.
* memoize.lisp (factor-memo-labels): New function, rips apart functions generated by memoize-expander, in order to factor out the multi-hash defining let blocks. (memoized-labels): Interface corrected. Also, use new function to generate a labels block that allows for mutually recursive memoized functions which preserve hash contents across arbitrarily mutually recursive calls. This is done by enclosing the functions in one big let block which binds all the hashes.
Adding some cool code: a multi-hash datatype which implements multi-dimensional sparse arrays using a tree of hash tables, and a function memoizer which uses multi hash to index on function arguments. * multi-hash.lisp (multi-hash): New class. (initialize-instance): New method on multi-hash. (multi-hash-common-code): New macro. (get-multi-hash, set-multi-hash): New functions. * memoize.lisp (define-memoized-function, memoized-labels): New macros. (remove-key-aux-rest strip-lambda-list, extract-tests, remove-tests, memoize-expander): New functions. * seqfuncs.lisp (lcs-list): Function is now correctly memoized using define-memoized-function.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|