Documentation
Locally bind NAME to a reducing function. The arguments
FUNCTION and INITIAL-VALUE are passed directly to MAKE-REDUCER.
Source
(defmacro with-reducer ((name function &optional (initial-value nil))
&body body)
"Locally bind NAME to a reducing function. The arguments
FUNCTION and INITIAL-VALUE are passed directly to MAKE-REDUCER."
(with-unique-names (reducer)
`(let ((,reducer (make-reducer ,function ,@(list initial-value))))
(flet ((,name (&rest items)
(if items
(dolist (i items)
(funcall ,reducer i))
(funcall ,reducer))))
,@body))))
Source Context