I have two things for the desired infinite list: its first element
x :: A
and function which generates the next element
f :: [A] -> A
What's the best (most idiomatic? fastest?) way to create infinite list? I mean
xs = x : f [x] : f [x, f [x]] : f [x, f [x], f [x, f [x]]] : ...