什么版本的LISP有putprop?

时间:2011-03-25 04:09:52

标签: lisp common-lisp clisp

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

我意识到我可以编写一个与putprop完全相同的函数,但是如果我必须执行进一步的翻译,我想知道:Lisp的哪个版本有putprop

4 个答案:

答案 0 :(得分:4)

MACLISP had it.Franz Lisp is reportedly similar to MACLISP以来,肯特皮特曼的Notes on Converting MACLISP/Zetalisp to Common Lisp可以帮助您获取正在使用的代码现代Common Lisp实现。

祝你好运!

答案 1 :(得分:3)

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

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

CL-USER 2 > (get 'foo :bar)
:BAZ

答案 2 :(得分:0)

便携式标准Lisp也有它,Interlisp也有。 Common Lisp不能执行的原因可能是由于可执行SETF,您不应该碰触它,因为它破坏性地修改了数据结构。但是,其他旧版Lisps中的putprop可能也可以通过破坏性修改来工作,因此,如果要实现putprop,可以这样做:

(defmacro putprop (var prop val)
  `(setf (get ,var ,prop) ,val)) 

答案 3 :(得分:-1)

我记得,Scheme已经putprop;但你称之为LISP吗?

<小时/> ACL2,http://en.wikipedia.org/wiki/ACL2,也有putprop,它建立在Common Lisp上。