TUPLE: numeric-range lower upper increment range ; : next-increment ( numeric-range -- n ) [ increment>> ] [ range>> ] bi peek + ; : append ( numeric-range -- ) dup next-increment swap [ range>> ] keep [ push ] dip drop ; : continue? ( numeric-range -- ? ) [ next-increment ] [ upper>> ] bi < ; : generate ( numeric-range -- ) [ dup continue? ] [ dup append ] while drop ; ( scratchpad ) 0 1000 5 V{ 0 } numeric-range boa ( scratchpad ) 0 1000 3 V{ 0 } numeric-range boa ( scratchpad ) [ dup generate ] bi@ [ range>> ] bi@ union sum