: 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 [ [ unclip swap ] dip tuck 2slip ! obj rest quot reduce+ ] if ; inline