刚学了几天普通的口齿不清,但教授给我布置了一个练习但是,我的代码无法编译,有人能告诉我哪里做错了我的编码部分吗?
(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/