: reduce+ ( obj items-seq quot: ( obj item -- obj ) -- obj ) ! mutates an obj based on quot and items over empty? [ 2drop ] ! leaves obj on the stack [ [ [ first ] [ rest ] bi ] dip tuck 2slip ! obj rest quot reduce+ ] if ; inline