1

据称,我正在破解一个旧的 Lisp 程序,该程序曾经在 Franz LISP 中编译和工作。但是 Franz LISP 太旧了,所以我正在尝试 CLISP 编译器。但是,CLISP 没有putprop.

我意识到我可以编写一个putpropputprop

4

4 回答 4

4

MACLISP 有它。 据报道,由于Franz Lisp 与 MACLISP 相似,因此zeropKent Pitman 的关于将 MACLISP/Zetalisp 转换为 Common Lisp的说明不可能帮助您获得正在使用的代码以在现代 Common Lisp 实现上运行。

祝你好运!

于 2011-03-25T11:47:29.200 回答
3

Common Lisp 中通过 SETF 和 GET 的组合提供了等效的功能。

CL-USER 1 > (setf (get 'foo :bar) :baz)
:BAZ

CL-USER 2 > (get 'foo :bar)
:BAZ
于 2011-03-25T11:03:10.627 回答
0

Portable Standard Lisp 也有它,Interlisp 也有。Common Lisp 不这样做的原因可能是因为 execrable SETF,你不应该用驳船来接触它,因为它会破坏性地修改数据结构。然而,可能putprop在其他遗留 Lisps 中也可以通过破坏性修改来工作,所以如果你想实现putprop你可以这样做:

(defmacro putprop (var prop val)
  `(setf (get ,var ,prop) ,val)) 
于 2019-05-10T19:18:18.817 回答
-1

as I remember, Scheme has putprop; but do you call that a LISP?


ACL2, http://en.wikipedia.org/wiki/ACL2, also has putprop, and it's built on Common Lisp.

于 2011-03-25T04:15:36.780 回答