使用循环将UCI lisp函数调整为通用lisp
我目前正在尝试使用Common Lisp重新创建一个用UCI Lisp编写的旧程序,但我对Lisp不是很流利 最初的功能是:使用循环将UCI lisp函数调整为通用lisp,lisp,common-lisp,clisp,Lisp,Common Lisp,Clisp,我目前正在尝试使用Common Lisp重新创建一个用UCI Lisp编写的旧程序,但我对Lisp不是很流利 最初的功能是: (DE SETROLE (ROLE FILLER CD) (CONS (HEADER:CD CD) (APPEND (FOR (PAIR IN (ROLES:CD CD)) (WHEN (NOT (EQUAL (ROLE:PAIR PAIR) ROLE))) (SAVE P
(DE SETROLE (ROLE FILLER CD)
(CONS (HEADER:CD CD)
(APPEND (FOR (PAIR IN (ROLES:CD CD))
(WHEN (NOT (EQUAL (ROLE:PAIR PAIR) ROLE)))
(SAVE PAIR))
(LIST (LIST ROLE FILLER]
以下是我常见的lisp解释:
(defun setrole (role filler cd)
(cons (header/cd cd)
(append (loop for pair in (roles/cd cd)
do (when (not (equal (role/pair pair) role))
(save pair)))
(list (list role filler)))))
这就是出现的错误:
*** - EVAL: variable WHEN has no value
我最初的想法是没有等效的“保存”功能。功能描述如下:
(DE SETROLE (ROLE FILLER CD)
(CONS (HEADER:CD CD)
(APPEND (FOR (PAIR IN (ROLES:CD CD))
(WHEN (NOT (EQUAL (ROLE:PAIR PAIR) ROLE)))
(SAVE PAIR))
(LIST (LIST ROLE FILLER]
SETROLE制作新的CD表单,添加(角色填充)或替换旧的(角色…)对
请帮帮我,我被难住了我找到了漏洞。代码下面有一个松散的“when”。FWIW我几乎可以从这个示例中确定UCI Lisp是InterLisp的一种风格。@tfb:UCI Lisp是Lisp 1.6+BBN Lisp(后来改名为InterLisp)extensions@RainerJoswig:谢谢!你知道有没有用户手册和c幸存下来(我喜欢阅读旧LISP的手册…@tfb:hehe,当然:tfb@RainerJoswig非常感谢.)。。这似乎真的很有希望。你介意帮我安装吗?我已经做了()和()了,但我不知道该怎么做。谢谢