Haha, okay, I wasn't sure if I was missing it :) I don't think mine has the linear cost. Each iteration applies exactly one `(f x)`. That gets passed along as a new argument to `iterate` which will apply `f` once to the already computed `(f x)` it got as an argument.