You’re right, I was taking the linked thing at face value.
The signature given is almost exactly Comonad. If I’m reading this right, Loeb’s theorem gives you something vaguely interesting: it’s a function from C[A] ⇒ A to A. So it tells you that any function that “flattens” a comonad must have some kind of “zero” value—e.g. any Stream[A] ⇒ A must give rise to a distinguished value of type A—which you can extract without ever having an instance of Stream[A].
You’re right, I was taking the linked thing at face value.
The signature given is almost exactly Comonad. If I’m reading this right, Loeb’s theorem gives you something vaguely interesting: it’s a function from C[A] ⇒ A to A. So it tells you that any function that “flattens” a comonad must have some kind of “zero” value—e.g. any Stream[A] ⇒ A must give rise to a distinguished value of type A—which you can extract without ever having an instance of Stream[A].
I’ve replied with Scala code upthread.