我已经阅读了几天时间的通用Lisp“ Practical Common Lisp”异常处理一章,但是现在我对示例和解释感到困惑,与此同时,我尝试编写一些测试示例,但是由于我不起作用意料之中,以下是我的测试样本。
条件定义
(define-condition evenp-error (error)
((text :initarg :text :reader text)))
Run Code Online (Sandbox Code Playgroud)定义打印奇数的函数
(defun filter-evenp (lst)
(dolist (x lst)
(if (not (evenp x))
(print x)
(error 'evenp-error :text x))))
Run Code Online (Sandbox Code Playgroud)重启功能
(defun skip-evenp (c) (invoke-start 'skip-evenp))
Run Code Online (Sandbox Code Playgroud)重新启动案例
(restart-case (filter-evenp (list 1 2 3 4 5))
(skip-evenp () nil))
Run Code Online (Sandbox Code Playgroud)我要做的就是打印所有奇数并跳过偶数错误,我的样本出了什么问题?有人帮忙吗?提前谢谢了!!
exception restart common-lisp conditional-statements condition-system
(defun foo(x y)(format t "X: ~a~%" x))
Run Code Online (Sandbox Code Playgroud)
上面的功能工作正常,但是
(defun foo(x y) ((format t "X: ~a~%" x) (format t "Y: ~a~%" y)))
Run Code Online (Sandbox Code Playgroud)
它提示
"*** - SYSTEM::%EXPAND-FORM: (FORMAT T "X: ~a~%" X) should be a lambda"
Run Code Online (Sandbox Code Playgroud)
如果我想单独打印参数x,y,如何修复编译错误?
我已经学习了Common Lisp一段时间了,有一个问题我遇到过如何实现这样一个函数,允许用户输入一些单词,直到用户输入退出.(实际上我想知道哪种命令行交互功能API符合这样的要求)
例如,在REPL中提示"请输入一个单词:",然后将用户输入存储到全局 my-words中,当用户输入"exit"时退出.