循环 – Emacs:cl循环和重复计算的值

在lisp中循环可能有点麻烦,这可以通过cl循环宏大大减轻.但是,我发现自己反复写了像hackish这样的东西

(cl-loop for item in some-list 
     with temp-var do (setf temp-var (some-function-of item))
     ...)

(cl-loop for item in some-list
     for x = (some-function-of item) then (some-function-of item)
     ...)

是否有更优雅的方式以相同的方式计算每次迭代的某些值?请注意,它必须在cl-loop的顶层可见,否则它将无法用于执行条件收集或返回语句.

最佳答案
为什么要包含then子句?我相当确定

(cl-loop for item in some-list
         for x = (some-function-of item)
         ...)

应该做.

或者,您可以在循环初始化时预先计算所有新值:

(loop for item     in some-list
      for mod-item in (mapcar 'some-function-of some-list)
      ...)

您可能希望使用with或let将some-list绑定为变量,如果它是复杂表达式.

转载注明原文:循环 – Emacs:cl循环和重复计算的值 - 代码日志