Streams are infinite lists. Lists can be modeled as monads. So can Streams. Here is a definition of the Stream monad:
$F(A) = A^{\mathbb{N}}$
All functions for $\mathbb{N}$ to A.
$\mathbb{N}$ represents the position in the list. A function from $\mathbb{N}$ to $A$ says the following:
- at the $0$th position, find $a_0$
- at the $1$st position, find $a_1$
- $\ldots$
Since $\mathbb{N}$ is infinite, we have infinite lists. The functor that defines the monad for streams is then: $$F : A \rightarrow A^N$$ $F$ works on morphisms by replacing the set elements in the list according to the function $f$, the same as the List monad. Next we need to define the natural transformations for the Stream Monad. $$\mu : F \cdot F \rightarrow F$$ This works just like the List monad, via concatenation. $$\eta : I_{Set} \rightarrow F$$ This works by injecting the set of element into the set of infinite lists such that $a$ goes into the list of $a$ repeated, so $[a,a,a, \ldots]$.
Is this correct?
Finally, what is the category of algebras for the Stream Monad? Specifically, I mean by this, given the Stream Monad $\mathcal{M}$, there are adjunctions and categories $U, C$ such that the adjunctions $U$ from $C$ to $Set$ generate monad $\mathcal{M}$. There is a category of such categories. What is this category?