+: reduce-from ( ... seq identity quot: ( ... prev elt -- ... next ) from -- ... result )
+ [ swap ] 2dip each-from ; inline
+
+: 0accumulate-as ( ... seq quot: ( ... prev elt -- ... next ) exemplar -- ... newseq )
+ pick empty? [
+ 2nip clone
+ ] [
+ [ 0 ] 2dip
+ [ swapd [ dup ] compose ] dip map-as nip
+ ] if ; inline
+
+: 0accumulate ( ... seq quot: ( ... prev elt -- ... next ) -- ... final newseq )
+ over 0accumulate-as ; inline
+
+: 0reduce ( seq quot: ( prev elt -- next ) -- result )
+ [ 0 ] dip reduce ; inline
+