在Lisp中有什么类似于C的return语句吗?

Aka*_*abu 4 lisp

我想在用Lisp编写的递归函数中实现基本条件,但由于Lisp中没有return语句,我无法做到这一点.

我的Lisp代码基于这个C代码

if (n==0) return;
Run Code Online (Sandbox Code Playgroud)

我如何在Lisp中实现它?

Mar*_*Cox 7

Common Lisp具有特殊形式RETURN-FROM(及其相对RETURN)来做你想要的.

(defun accumulate-list (list)
  (when (null list)
    (return-from accumulate-list 0))
  (+ (first list)
     (accumulate-list (rest list))))
Run Code Online (Sandbox Code Playgroud)

话虽如此,我更喜欢在编写递归函数时使用COND.

(defun accumulate-list (list)
   (cond
     ((null list)
      0)
     (t
      (+ (first list)
         (accumulate-list (rest list))))))
Run Code Online (Sandbox Code Playgroud)