我已经阅读了几天Common Lisp中的异常处理章节《Practical Common Lisp》,但是我现在对示例和解释感到非常困惑。同时,我尝试编写一些测试用例,但是它并没有按照我的预期工作,以下是我的测试用例。
Condition definition
(define-condition evenp-error (error) ((text :initarg :text :reader text)))
Define function that prints odd number
(defun filter-evenp (lst) (dolist (x lst) (if (not (evenp x)) (print x) (error 'evenp-error :text x))))
Restart function
(defun skip-evenp (c) (invoke-start 'skip-evenp))
Restart case
(restart-case (filter-evenp (list 1 2 3 4 5)) (skip-evenp () nil))