Rob*_*nie 3 lisp common-lisp gnu-common-lisp
我最近一直在玩LISP,我想通过缓存它的输出来尝试优化一个非常低效的递归函数,所以它只运行一次参数的每个组合.我想将结果保存到哈希表中,使用(LIST a b)
或(CONS a b)
作为键.我的问题是,这甚至可能吗?我读过的文档会让我相信它,因为我读到的文档定义key
为"对象",并将"对象"定义为构造的东西cons
.所以我试了一下.
(defparameter *table* (make-hash-table))
(setf (gethash (list 1 2) *table*) 123)
(format t "~S~%" (gethash (list 1 2) *table*))
Run Code Online (Sandbox Code Playgroud)
它给了我NIL
,当我期待123
.如果我更换(list 1 2)
了cons
它仍然无法正常工作,但是当我使用一个普通的整数,它工作正常.
我正在使用GCL 2.6.12
(make-hash-table :test #'equal)
Run Code Online (Sandbox Code Playgroud)