public object Reduce(IFn function, object start) { object ret = function.Invoke(start, this.First()); for (ISequence sequence = this.Next(); sequence != null; sequence = sequence.Next()) ret = function.Invoke(ret, sequence.First()); return ret; }