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