刚学了几天普通的口齿不清,但教授给我布置了一个练习但是,我的代码无法编译,有人能告诉我哪里做错了我的编码部分吗?lisp - 如何在Common Lisp中注意多病状检查?-LMLPHP

(defun( MIN-2 a b)
(cond
((and (numberp a) (numberp b) (<= a b)) a b)
((and (numberp a) (numberp b)    nil) ERROR)
)
)

最佳答案

直译:

(defun min-2 (a b)  ; Define a Lisp function MIN-2 … takes two arguments A and B
  (cond ((and (every #'numberp (list a b)) (<= a b)) a)  ; if … A <= B, returns A
        ((and (every #'numberp (list a b)) (> a b)) b)   ; if … A > B, returns B
        (t 'error)      ; if A or B is not a number (i. e. “else”), returns ERROR

改进:事先只检查一次号码。
(defun min-2 (a b)
  (cond ((not (every #'numberp (list a b))) 'error)
        ((<= a b) a)
        ((> a b) b)))

请缩进你的代码,不要把括号放在旁边。

关于lisp - 如何在Common Lisp中注意多病状检查?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54778426/

10-11 06:33