CL 库手册“映射序列”说“所有这些映射操作都可以用 cl-loop 宏方便地表示”,但我不明白如何用 cl-loop 表示 cl-reduce
问问题
158 次
1 回答
1
不确定它是如何“方便地”表达的,但这是我的看法:
(defun loop-reduce (func sequence &rest initial-element)
(loop with result =
(or (car initial-element)
(prog1 (car sequence)
(setf sequence (cdr sequence))))
for x in sequence do (setf result (funcall func result x))
finally (return result)))
(loop-reduce '+ '(1 2 3 4 5))
;; 15
(loop-reduce '+ '(1 2 3 4 5) 10)
;; 25
于 2013-06-30T18:41:31.213 回答