I agree that `interleave` reads better than `iStr`. I&#x27;ve updated the post.<p>FWIW I wasn&#x27;t really trying to name things in an idiomatic &quot;Haskell&quot; way, I just wanted a shorter name and `iStr` was the first thing that popped into my mind.<p>Regarding the performance issue, it&#x27;s fast. As an example, running `take 10000000 $ streamToList ruler` at ghci forces Haskell to evaluate (and print) the first 10 million elements of the ruler sequence. On my machine I observed that the printing is the bottleneck. The computation of the next Integer in the series takes next to no time.