code: function reduce(seq, pred, initial, ctx) {
          if (objp(ctx))  pred = pred.bind(ctx)
  
          return sequencep(seq)?  __reduce.call(seq, pred, initial)
               : /* non-seq */    []
      }
docs: /// Function reduce //////////////////////////////////////////////////////  (seq:Sequence, pred:Fn[, initial][, ctx:Obj]) ↦ *mixed*  Apply the predicate against each pair in the array (left to right) so to return a single accumulated value.  An starting value can be given, in which case the array will work as if that item was inserted as the first element.