我目前正在尝试使用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 PAIR))
(LIST (LIST ROLE FILLER]
这是我常见的口齿不清的解释:
(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
我最初的想法是,没有等效的“保存”功能。该函数的描述是:
SETROLE添加(ROLE FILLER)或替换旧的(ROLE ...)对,形成新的CD形式。
请帮助,我很困惑
我发现了错误。代码下方有个松散的“何时”。