どういたしまして。もう一つ:

f n xs = zipN $ take n $ tails xs
zipN xss = if any null xss then [] else map head xss : zipN (map tail xss)

ただし f 0 xs で暴走。