X-Git-Url: http://git.kpe.io/?p=kmrcl.git;a=blobdiff_plain;f=functions.lisp;h=80f22211aa19474edc12e43f0530fce76b854dd6;hp=3bc09bcd8fe6d2bddb3356ab7ba73fca6bd995af;hb=969fdba72abb830cd8fff86cc77c21b4a7da3620;hpb=ba354a40a203103a4cf16cd3d21f89f707ba5205 diff --git a/functions.lisp b/functions.lisp index 3bc09bc..80f2221 100644 --- a/functions.lisp +++ b/functions.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: functions.lisp,v 1.2 2003/05/16 12:55:15 kevin Exp $ +;;;; $Id$ ;;;; ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -18,17 +18,17 @@ (in-package :kmrcl) -(defun memo-proc (fn &optional (test 'equal)) +(defun memo-proc (fn) "Memoize results of call to fn, returns a closure with hash-table" - (let ((cache (make-hash-table :test test))) + (let ((cache (make-hash-table :test #'equal))) #'(lambda (&rest args) (multiple-value-bind (val foundp) (gethash args cache) (if foundp val (setf (gethash args cache) (apply fn args))))))) -(defun memoize (fn-name &optional (test 'equal)) - (setf (fdefinition fn-name) (memo-proc (fdefinition fn-name) test))) +(defun memoize (fn-name) + (setf (fdefinition fn-name) (memo-proc (fdefinition fn-name)))) (defmacro defun-memo (fn args &body body) "Define a memoized function"