才学了几天Common Lisp,教授给我布置了一个习题。但是,我的代码无法编译,谁能告诉我我的编码部分哪里做错了?
(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/