: reduce+ ( obj items quot -- obj' ) '[ _ curry ] map (reduce+) drop ; : (reduce+) ( obj quot-items -- obj' quot-items ) dup empty? [ unclip swap [ call ] dip (reduce+) ] unless ; recursive