inits package:infinite-list

Generate all prefixes of an infinite list.
>>> :set -XPostfixOperators

>>> Data.List.Infinite.take 5 $ Data.List.Infinite.inits (0...)
[[],[0],[0,1],[0,1,2],[0,1,2,3]]
If you need reversed prefixes, they can be generated cheaper using scanl':
>>> :set -XPostfixOperators

>>> Data.List.Infinite.take 5 $ Data.List.Infinite.scanl' (flip (:)) [] (0...)
[[],[0],[1,0],[2,1,0],[3,2,1,0]]
Generate all non-empty prefixes of an infinite list.