For the Haskell:

   f (x:xs) = f ys ++ [x] ++ f zs

 

If you're working with IEnumerable<IComparable> as your lists, what's the preferred C# w LINQ mapping for the right-hand side of this?