iterate -is:exact -package:synthesizer-core package:sorted-list

Create a sorted list by repeatedly applying the same function to an element, until the image by that function is stricly less than its argument. In other words:
iterate f x = [x, f x, f (f x), ... ]
With the list ending whenever f (f (... (f (f x)) ...)) < f (... (f (f x)) ...). If this never happens, the list will be infinite. By definition:
iterate f = unfoldr (\x -> Just (x, f x))