其他语言中需要break语句或continue语句的代码可以使用公共Lisp和Emacs Lisp中的block&return-fromcatch&throw来完成还有一些代码需要redo语句,或者至少最好用redo编写而且redo语句不必是关于循环的我怎样才能在Lisp中redo
如果Lisp中有一个redo等价物,我认为它的工作方式是这样的:特殊形式with-redo接受符号和形式,而redo接受符号表单(with-redo 'foo BODY-FORMS...)可能在其身体表单中包含(redo 'foo)(redo 'foo)将控制权转移回身体表单的开头。

最佳答案

口齿不清:

(tagbody
   start
   (do-something)
   (go start))


(dotimes (i some-list)
  redo
  (when (some-condition-p)
    (go redo))
  (some-more))

07-24 09:38