r4981: Auto commit for Debian build
[kmrcl.git] / functions.lisp
index ffc8ac6cddbce58debbbc092dfac3c93dff06d4a..3bc09bcd8fe6d2bddb3356ab7ba73fca6bd995af 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
-;;;; $Id: functions.lisp,v 1.1 2003/04/28 23:51:59 kevin Exp $
+;;;; $Id: functions.lisp,v 1.2 2003/05/16 12:55:15 kevin Exp $
 ;;;;
 ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
 
 (in-package :kmrcl)
 
-(defun memo-proc (fn)
+(defun memo-proc (fn &optional (test 'equal))
   "Memoize results of call to fn, returns a closure with hash-table"
-  (let ((cache (make-hash-table :test #'equal)))
+  (let ((cache (make-hash-table :test test)))
     #'(lambda (&rest args)
         (multiple-value-bind (val foundp) (gethash args cache)
           (if foundp
               val
-              (setf (gethash args cache) 
-                    (apply fn args)))))))
+           (setf (gethash args cache) (apply fn args)))))))
 
-(defun memoize (fn-name)
-  (setf (fdefinition fn-name) (memo-proc (fdefinition fn-name))))
+(defun memoize (fn-name &optional (test 'equal))
+  (setf (fdefinition fn-name) (memo-proc (fdefinition fn-name) test)))
 
 (defmacro defun-memo (fn args &body body)
   "Define a memoized function"