I learned the intersperse function from Haskell, and have been looking for an implementation in c#.
Intersperse takes 2 arguments, an IEnumerable<T> source and a T element. It returns an IEnumerable with element inserted between every element of source.
One possible use-case is to put an arbitrary interger in between a list of integers, for example:
// returns: {1, 0, 2, 0, 3}
(List<int>() {1, 2, 3}).Intersperse(0);
This is a general case of string.Join(...).