Speaking of things that the Haskell type system lets you make explicit, the isomorphism between streams and functions from the natural numbers means that streams are &quot;representable functors&quot; in the jargon of category theory. [1] Knowing that a data type is representable allows you to immediately build a bunch of other interesting structures on the data type. [0]<p>[0] <a href="http:&#x2F;&#x2F;covariant.me&#x2F;notes&#x2F;rep-functors.html" rel="nofollow">http:&#x2F;&#x2F;covariant.me&#x2F;notes&#x2F;rep-functors.html</a>
[1] <a href="https:&#x2F;&#x2F;pamiz.wordpress.com&#x2F;2014&#x2F;02&#x2F;13&#x2F;the-functor-of-infinite-lists-is-representable-by-natural-numbers&#x2F;" rel="nofollow">https:&#x2F;&#x2F;pamiz.wordpress.com&#x2F;2014&#x2F;02&#x2F;13&#x2F;the-functor-of-infini...</a>