使UCI lisp函数具有对常见lisp的循环

问题描述 投票:0回答:1

我目前正在尝试使用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形式。

请帮助,我很困惑

lisp common-lisp clisp
1个回答
0
投票

我发现了错误。代码下方有个松散的“何时”。

© www.soinside.com 2019 - 2024. All rights reserved.