据称,我正在破解一个旧的 Lisp 程序,该程序曾经在 Franz LISP 中编译和工作。但是 Franz LISP 太旧了,所以我正在尝试 CLISP 编译器。但是,CLISP 没有putprop
.
我意识到我可以编写一个putprop
与putprop
据称,我正在破解一个旧的 Lisp 程序,该程序曾经在 Franz LISP 中编译和工作。但是 Franz LISP 太旧了,所以我正在尝试 CLISP 编译器。但是,CLISP 没有putprop
.
我意识到我可以编写一个putprop
与putprop
MACLISP 有它。 据报道,由于Franz Lisp 与 MACLISP 相似,因此zerop
Kent Pitman 的关于将 MACLISP/Zetalisp 转换为 Common Lisp的说明不可能帮助您获得正在使用的代码以在现代 Common Lisp 实现上运行。
祝你好运!
Common Lisp 中通过 SETF 和 GET 的组合提供了等效的功能。
CL-USER 1 > (setf (get 'foo :bar) :baz)
:BAZ
CL-USER 2 > (get 'foo :bar)
:BAZ
Portable Standard Lisp 也有它,Interlisp 也有。Common Lisp 不这样做的原因可能是因为 execrable SETF
,你不应该用驳船来接触它,因为它会破坏性地修改数据结构。然而,可能putprop
在其他遗留 Lisps 中也可以通过破坏性修改来工作,所以如果你想实现putprop
你可以这样做:
(defmacro putprop (var prop val)
`(setf (get ,var ,prop) ,val))
as I remember, Scheme has putprop; but do you call that a LISP?