People like to describe comonads as being about "what you need from your environment" or something similar, which I have never liked. It's not a constructive explanation of e.g. why effects like State, Reader, Writer can be modeled using comonads but general IO can't.


