IEnumerable<int> Nats () {
    for (int s = 0; true; s++) {
        yield return s;
    }
}
Implementiere „das merge aus mergesort`` (Spezifikation?)
static IEnumerable<E> Merge<E> 
    (IEnumerable<E> xs, IEnumerable<E> ys) 
  where E : IComparable<E>
zunächst für unendliche Ströme,
  Test: Merge(Nats().Select(x=>x*x),Nats().Select(x=>3*x+1)).Take(10)
(benötigt using System.Linq und Assembly System.Core)
Dann auch für endliche Ströme, Test:
Merge(new int [] {1,3,4}, new int [] {2,7,8})
Dann Mergesort
   static IEnumerable<E> Sort<E> (IEnumerable<E> xs) 
        where E : IComparable<E> {
        if (xs.Count() <= 1) {
            return xs;
        } else { // zwei Zeilen folgen
            ...
        }
    }
Test: Sort(new int [] { 3,1,4,1,5,9})